@payloadcms/graphql 4.0.0-internal.cc18726 → 4.0.0-internal.cd47d20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ export function findResolver(collection) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollectionMany(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/collections/find.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, PaginatedDocs, Where } from 'payload'\n\nimport { findOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n data: Record<string, unknown>\n draft: boolean\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n trash?: boolean\n where?: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<PaginatedDocs<any>>\n\nexport function findResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const { sort } = args\n\n const options = {\n collection,\n depth: 0,\n draft: args.draft,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n trash: args.trash,\n where: args.where,\n }\n\n const result = await findOperation(options)\n return result\n }\n}\n"],"names":["findOperation","isolateObjectProperty","buildSelectForCollectionMany","findResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","sort","options","depth","limit","page","pagination","split","trash","where","result"],"mappings":"AAGA,SAASA,aAAa,EAAEC,qBAAqB,QAAQ,UAAS;AAI9D,SAASC,4BAA4B,QAAQ,4BAA2B;AAsBxE,OAAO,SAASC,aAAaC,UAAsB;IACjD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,QAAQG;QAEpFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAM,EAAEE,IAAI,EAAE,GAAGX;QAEjB,MAAMY,UAAU;YACdf;YACAgB,OAAO;YACPJ,OAAOT,KAAKS,KAAK;YACjBK,OAAOd,KAAKc,KAAK;YACjBC,MAAMf,KAAKe,IAAI;YACfC,YAAYhB,KAAKgB,UAAU;YAC3Bb;YACAC;YACAO,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOZ;YAC3Da,OAAOlB,KAAKkB,KAAK;YACjBC,OAAOnB,KAAKmB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAM3B,cAAcmB;QACnC,OAAOQ;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/collections/find.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, PaginatedDocs, Where } from 'payload'\n\nimport { findOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n data: Record<string, unknown>\n draft: boolean\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n trash?: boolean\n where?: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => Promise<PaginatedDocs<any>>\n\nexport function findResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const { sort } = args\n\n const options = {\n collection,\n depth: 0,\n draft: args.draft,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n trash: args.trash,\n where: args.where,\n }\n\n const result = await findOperation(options)\n return result\n }\n}\n"],"names":["findOperation","isolateObjectProperty","buildSelectForCollectionMany","findResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","sort","options","depth","limit","page","pagination","split","trash","where","result"],"mappings":"AAGA,SAASA,aAAa,EAAEC,qBAAqB,QAAQ,UAAS;AAI9D,SAASC,4BAA4B,QAAQ,4BAA2B;AAsBxE,OAAO,SAASC,aAAaC,UAAsB;IACjD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,MAAMD,WAAWI;QAE7FF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAM,EAAEE,IAAI,EAAE,GAAGX;QAEjB,MAAMY,UAAU;YACdf;YACAgB,OAAO;YACPJ,OAAOT,KAAKS,KAAK;YACjBK,OAAOd,KAAKc,KAAK;YACjBC,MAAMf,KAAKe,IAAI;YACfC,YAAYhB,KAAKgB,UAAU;YAC3Bb;YACAC;YACAO,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOZ;YAC3Da,OAAOlB,KAAKkB,KAAK;YACjBC,OAAOnB,KAAKmB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAM3B,cAAcmB;QACnC,OAAOQ;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findByIDResolver(collection) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollection(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/collections/findByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, CollectionSlug, DataFromCollectionSlug } from 'payload'\n\nimport { findByIDOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver<TData> = (\n _: unknown,\n args: {\n draft: boolean\n fallbackLocale?: string\n id: string\n locale?: string\n select?: boolean\n trash?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<TData>\n\nexport function findByIDResolver<TSlug extends CollectionSlug>(\n collection: Collection,\n): Resolver<DataFromCollectionSlug<TSlug>> {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const options = {\n id: args.id,\n collection,\n depth: 0,\n draft: args.draft,\n req,\n select,\n trash: args.trash,\n }\n\n const result = await findByIDOperation(options)\n return result\n }\n}\n"],"names":["findByIDOperation","isolateObjectProperty","buildSelectForCollection","findByIDResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","options","id","depth","trash","result"],"mappings":"AAGA,SAASA,iBAAiB,EAAEC,qBAAqB,QAAQ,UAAS;AAIlE,SAASC,wBAAwB,QAAQ,4BAA2B;AAgBpE,OAAO,SAASC,iBACdC,UAAsB;IAEtB,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,QAAQG;QAE/EF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAME,UAAU;YACdC,IAAIZ,KAAKY,EAAE;YACXf;YACAgB,OAAO;YACPJ,OAAOT,KAAKS,KAAK;YACjBN;YACAC;YACAU,OAAOd,KAAKc,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMtB,kBAAkBkB;QACvC,OAAOI;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/collections/findByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, CollectionSlug, DataFromCollectionSlug } from 'payload'\n\nimport { findByIDOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver<TData> = (\n _: unknown,\n args: {\n draft: boolean\n fallbackLocale?: string\n id: string\n locale?: string\n select?: boolean\n trash?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<TData>\n\nexport function findByIDResolver<TSlug extends CollectionSlug>(\n collection: Collection,\n): Resolver<DataFromCollectionSlug<TSlug>> {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const options = {\n id: args.id,\n collection,\n depth: 0,\n draft: args.draft,\n req,\n select,\n trash: args.trash,\n }\n\n const result = await findByIDOperation(options)\n return result\n }\n}\n"],"names":["findByIDOperation","isolateObjectProperty","buildSelectForCollection","findByIDResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","options","id","depth","trash","result"],"mappings":"AAGA,SAASA,iBAAiB,EAAEC,qBAAqB,QAAQ,UAAS;AAIlE,SAASC,wBAAwB,QAAQ,4BAA2B;AAgBpE,OAAO,SAASC,iBACdC,UAAsB;IAEtB,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,MAAMD,WAAWI;QAExFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAME,UAAU;YACdC,IAAIZ,KAAKY,EAAE;YACXf;YACAgB,OAAO;YACPJ,OAAOT,KAAKS,KAAK;YACjBN;YACAC;YACAU,OAAOd,KAAKc,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMtB,kBAAkBkB;QACvC,OAAOI;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findVersionByIDResolver(collection) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollection(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/collections/findVersionByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { findVersionByIDOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver<T extends TypeWithID = any> = (\n _: unknown,\n args: {\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n trash?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<TypeWithVersion<T>>\n\nexport function findVersionByIDResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n id: args.id,\n collection,\n depth: 0,\n req,\n select,\n trash: args.trash,\n }\n\n const result = await findVersionByIDOperation(options)\n return result\n }\n}\n"],"names":["findVersionByIDOperation","isolateObjectProperty","buildSelectForCollection","findVersionByIDResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","options","id","depth","trash","result"],"mappings":"AAGA,SAASA,wBAAwB,EAAEC,qBAAqB,QAAQ,UAAS;AAIzE,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,wBAAwBC,UAAsB;IAC5D,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,QAAQG;QAE/EF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdC,IAAIV,KAAKU,EAAE;YACXb;YACAc,OAAO;YACPR;YACAC;YACAQ,OAAOZ,KAAKY,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMpB,yBAAyBgB;QAC9C,OAAOI;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/collections/findVersionByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, TypeWithID, TypeWithVersion } from 'payload'\n\nimport { findVersionByIDOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver<T extends TypeWithID = any> = (\n _: unknown,\n args: {\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n trash?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<TypeWithVersion<T>>\n\nexport function findVersionByIDResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n id: args.id,\n collection,\n depth: 0,\n req,\n select,\n trash: args.trash,\n }\n\n const result = await findVersionByIDOperation(options)\n return result\n }\n}\n"],"names":["findVersionByIDOperation","isolateObjectProperty","buildSelectForCollection","findVersionByIDResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","options","id","depth","trash","result"],"mappings":"AAGA,SAASA,wBAAwB,EAAEC,qBAAqB,QAAQ,UAAS;AAIzE,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,wBAAwBC,UAAsB;IAC5D,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,MAAMD,WAAWI;QAExFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdC,IAAIV,KAAKU,EAAE;YACXb;YACAc,OAAO;YACPR;YACAC;YACAQ,OAAOZ,KAAKY,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMpB,yBAAyBgB;QAC9C,OAAOI;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findVersionsResolver(collection) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollectionMany(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/collections/findVersions.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, PaginatedDocs, Where } from 'payload'\n\nimport { findVersionsOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n trash?: boolean\n where: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<PaginatedDocs<any>>\n\nexport function findVersionsResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const { sort } = args\n\n const options = {\n collection,\n depth: 0,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n trash: args.trash,\n where: args.where,\n }\n\n const result = await findVersionsOperation(options)\n return result\n }\n}\n"],"names":["findVersionsOperation","isolateObjectProperty","buildSelectForCollectionMany","findVersionsResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","sort","options","depth","limit","page","pagination","split","trash","where","result"],"mappings":"AAGA,SAASA,qBAAqB,EAAEC,qBAAqB,QAAQ,UAAS;AAItE,SAASC,4BAA4B,QAAQ,4BAA2B;AAoBxE,OAAO,SAASC,qBAAqBC,UAAsB;IACzD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,QAAQG;QAEpFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAM,EAAEE,IAAI,EAAE,GAAGX;QAEjB,MAAMY,UAAU;YACdf;YACAgB,OAAO;YACPC,OAAOd,KAAKc,KAAK;YACjBC,MAAMf,KAAKe,IAAI;YACfC,YAAYhB,KAAKgB,UAAU;YAC3Bb;YACAC;YACAO,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOZ;YAC3Da,OAAOlB,KAAKkB,KAAK;YACjBC,OAAOnB,KAAKmB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAM3B,sBAAsBmB;QAC3C,OAAOQ;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/collections/findVersions.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Collection, PaginatedDocs, Where } from 'payload'\n\nimport { findVersionsOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n trash?: boolean\n where: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<PaginatedDocs<any>>\n\nexport function findVersionsResolver(collection: Collection): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const draft: boolean =\n (args.draft ?? req.query?.draft === 'false')\n ? false\n : req.query?.draft === 'true'\n ? true\n : undefined\n if (typeof draft === 'boolean') {\n req.query.draft = String(draft)\n }\n\n const { sort } = args\n\n const options = {\n collection,\n depth: 0,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n trash: args.trash,\n where: args.where,\n }\n\n const result = await findVersionsOperation(options)\n return result\n }\n}\n"],"names":["findVersionsOperation","isolateObjectProperty","buildSelectForCollectionMany","findVersionsResolver","collection","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","draft","String","sort","options","depth","limit","page","pagination","split","trash","where","result"],"mappings":"AAGA,SAASA,qBAAqB,EAAEC,qBAAqB,QAAQ,UAAS;AAItE,SAASC,4BAA4B,QAAQ,4BAA2B;AAoBxE,OAAO,SAASC,qBAAqBC,UAAsB;IACzD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,MAAMD,WAAWI;QAE7FF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,QACJ,AAACT,KAAKS,KAAK,IAAIN,IAAIK,KAAK,EAAEC,UAAU,UAChC,QACAN,IAAIK,KAAK,EAAEC,UAAU,SACnB,OACAJ;QACR,IAAI,OAAOI,UAAU,WAAW;YAC9BN,IAAIK,KAAK,CAACC,KAAK,GAAGC,OAAOD;QAC3B;QAEA,MAAM,EAAEE,IAAI,EAAE,GAAGX;QAEjB,MAAMY,UAAU;YACdf;YACAgB,OAAO;YACPC,OAAOd,KAAKc,KAAK;YACjBC,MAAMf,KAAKe,IAAI;YACfC,YAAYhB,KAAKgB,UAAU;YAC3Bb;YACAC;YACAO,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOZ;YAC3Da,OAAOlB,KAAKkB,KAAK;YACjBC,OAAOnB,KAAKmB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAM3B,sBAAsBmB;QAC3C,OAAOQ;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findOne(globalConfig) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollection(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined;
11
11
  const { slug } = globalConfig;
12
12
  req.locale = args.locale || req.locale;
13
13
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/globals/findOne.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig } from 'payload'\n\nimport { findOneOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo\n) => Promise<Document>\n\nexport function findOne(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info) : undefined\n const { slug } = globalConfig\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n slug,\n depth: 0,\n draft: args.draft,\n globalConfig,\n req,\n select,\n }\n\n const result = await findOneOperation(options)\n return result\n }\n}\n"],"names":["findOneOperation","isolateObjectProperty","buildSelectForCollection","findOne","globalConfig","resolver","_","args","context","info","req","select","undefined","slug","locale","fallbackLocale","query","options","depth","draft","result"],"mappings":"AAGA,SAASA,gBAAgB,EAAEC,qBAAqB,QAAQ,UAAS;AAIjE,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,QAAQC,YAAmC;IACzD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,QAAQG;QAC/E,MAAM,EAAEC,IAAI,EAAE,GAAGT;QAEjBM,IAAII,MAAM,GAAGP,KAAKO,MAAM,IAAIJ,IAAII,MAAM;QACtCJ,IAAIK,cAAc,GAAGR,KAAKQ,cAAc,IAAIL,IAAIK,cAAc;QAC9DL,IAAIM,KAAK,GAAGN,IAAIM,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdJ;YACAK,OAAO;YACPC,OAAOZ,KAAKY,KAAK;YACjBf;YACAM;YACAC;QACF;QAEA,MAAMS,SAAS,MAAMpB,iBAAiBiB;QACtC,OAAOG;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/globals/findOne.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig } from 'payload'\n\nimport { findOneOperation, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo\n) => Promise<Document>\n\nexport function findOne(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined\n const { slug } = globalConfig\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n slug,\n depth: 0,\n draft: args.draft,\n globalConfig,\n req,\n select,\n }\n\n const result = await findOneOperation(options)\n return result\n }\n}\n"],"names":["findOneOperation","isolateObjectProperty","buildSelectForCollection","findOne","globalConfig","resolver","_","args","context","info","req","select","undefined","slug","locale","fallbackLocale","query","options","depth","draft","result"],"mappings":"AAGA,SAASA,gBAAgB,EAAEC,qBAAqB,QAAQ,UAAS;AAIjE,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,QAAQC,YAAmC;IACzD,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,MAAMD,WAAWI;QACxF,MAAM,EAAEC,IAAI,EAAE,GAAGT;QAEjBM,IAAII,MAAM,GAAGP,KAAKO,MAAM,IAAIJ,IAAII,MAAM;QACtCJ,IAAIK,cAAc,GAAGR,KAAKQ,cAAc,IAAIL,IAAIK,cAAc;QAC9DL,IAAIM,KAAK,GAAGN,IAAIM,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdJ;YACAK,OAAO;YACPC,OAAOZ,KAAKY,KAAK;YACjBf;YACAM;YACAC;QACF;QAEA,MAAMS,SAAS,MAAMpB,iBAAiBiB;QACtC,OAAOG;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findVersionByID(globalConfig) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollection(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/globals/findVersionByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig } from 'payload'\n\nimport { findVersionByIDOperationGlobal, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo\n) => Promise<Document>\n\nexport function findVersionByID(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n id: args.id,\n depth: 0,\n draft: args.draft,\n globalConfig,\n req,\n select,\n }\n\n const result = await findVersionByIDOperationGlobal(options)\n return result\n }\n}\n"],"names":["findVersionByIDOperationGlobal","isolateObjectProperty","buildSelectForCollection","findVersionByID","globalConfig","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","options","id","depth","draft","result"],"mappings":"AAGA,SAASA,8BAA8B,EAAEC,qBAAqB,QAAQ,UAAS;AAI/E,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,gBAAgBC,YAAmC;IACjE,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,QAAQG;QAE/EF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdC,IAAIV,KAAKU,EAAE;YACXC,OAAO;YACPC,OAAOZ,KAAKY,KAAK;YACjBf;YACAM;YACAC;QACF;QAEA,MAAMS,SAAS,MAAMpB,+BAA+BgB;QACpD,OAAOI;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/globals/findVersionByID.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig } from 'payload'\n\nimport { findVersionByIDOperationGlobal, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollection } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n fallbackLocale?: string\n id: number | string\n locale?: string\n select?: boolean\n },\n context: Context,\n info: GraphQLResolveInfo\n) => Promise<Document>\n\nexport function findVersionByID(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = context.req = isolateObjectProperty(context.req, ['locale', 'fallbackLocale', 'transactionID'])\n const select = context.select = args.select ? buildSelectForCollection(info, context) : undefined\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const options = {\n id: args.id,\n depth: 0,\n draft: args.draft,\n globalConfig,\n req,\n select,\n }\n\n const result = await findVersionByIDOperationGlobal(options)\n return result\n }\n}\n"],"names":["findVersionByIDOperationGlobal","isolateObjectProperty","buildSelectForCollection","findVersionByID","globalConfig","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","options","id","depth","draft","result"],"mappings":"AAGA,SAASA,8BAA8B,EAAEC,qBAAqB,QAAQ,UAAS;AAI/E,SAASC,wBAAwB,QAAQ,4BAA2B;AAepE,OAAO,SAASC,gBAAgBC,YAAmC;IACjE,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAMF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAAC;YAAU;YAAkB;SAAgB;QAC1G,MAAMC,SAASH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,yBAAyBO,MAAMD,WAAWI;QAExFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAMC,UAAU;YACdC,IAAIV,KAAKU,EAAE;YACXC,OAAO;YACPC,OAAOZ,KAAKY,KAAK;YACjBf;YACAM;YACAC;QACF;QAEA,MAAMS,SAAS,MAAMpB,+BAA+BgB;QACpD,OAAOI;IACT;AACF"}
@@ -7,7 +7,7 @@ export function findVersions(globalConfig) {
7
7
  'fallbackLocale',
8
8
  'transactionID'
9
9
  ]);
10
- const select = context.select = args.select ? buildSelectForCollectionMany(info) : undefined;
10
+ const select = context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined;
11
11
  req.locale = args.locale || req.locale;
12
12
  req.fallbackLocale = args.fallbackLocale || req.fallbackLocale;
13
13
  req.query = req.query || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/globals/findVersions.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig, Where } from 'payload'\n\nimport { findVersionsOperationGlobal, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n where: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<Document>\n\nexport function findVersions(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const { sort } = args\n\n const options = {\n depth: 0,\n globalConfig,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n where: args.where,\n }\n\n const result = await findVersionsOperationGlobal(options)\n return result\n }\n}\n"],"names":["findVersionsOperationGlobal","isolateObjectProperty","buildSelectForCollectionMany","findVersions","globalConfig","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","sort","options","depth","limit","page","pagination","split","where","result"],"mappings":"AAGA,SAASA,2BAA2B,EAAEC,qBAAqB,QAAQ,UAAS;AAI5E,SAASC,4BAA4B,QAAQ,4BAA2B;AAkBxE,OAAO,SAASC,aAAaC,YAAmC;IAC9D,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,QAAQG;QAEpFF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAM,EAAEC,IAAI,EAAE,GAAGT;QAEjB,MAAMU,UAAU;YACdC,OAAO;YACPd;YACAe,OAAOZ,KAAKY,KAAK;YACjBC,MAAMb,KAAKa,IAAI;YACfC,YAAYd,KAAKc,UAAU;YAC3BX;YACAC;YACAK,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOV;YAC3DW,OAAOhB,KAAKgB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMxB,4BAA4BiB;QACjD,OAAOO;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/globals/findVersions.ts"],"sourcesContent":["import type { GraphQLResolveInfo } from 'graphql'\nimport type { Document, SanitizedGlobalConfig, Where } from 'payload'\n\nimport { findVersionsOperationGlobal, isolateObjectProperty } from 'payload'\n\nimport type { Context } from '../types.js'\n\nimport { buildSelectForCollectionMany } from '../../utilities/select.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n fallbackLocale?: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n select?: boolean\n sort?: string\n where: Where\n },\n context: Context,\n info: GraphQLResolveInfo,\n) => Promise<Document>\n\nexport function findVersions(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context, info) {\n const req = (context.req = isolateObjectProperty(context.req, [\n 'locale',\n 'fallbackLocale',\n 'transactionID',\n ]))\n const select = (context.select = args.select ? buildSelectForCollectionMany(info, context) : undefined)\n\n req.locale = args.locale || req.locale\n req.fallbackLocale = args.fallbackLocale || req.fallbackLocale\n req.query = req.query || {}\n\n const { sort } = args\n\n const options = {\n depth: 0,\n globalConfig,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n req,\n select,\n sort: sort && typeof sort === 'string' ? sort.split(',') : undefined,\n where: args.where,\n }\n\n const result = await findVersionsOperationGlobal(options)\n return result\n }\n}\n"],"names":["findVersionsOperationGlobal","isolateObjectProperty","buildSelectForCollectionMany","findVersions","globalConfig","resolver","_","args","context","info","req","select","undefined","locale","fallbackLocale","query","sort","options","depth","limit","page","pagination","split","where","result"],"mappings":"AAGA,SAASA,2BAA2B,EAAEC,qBAAqB,QAAQ,UAAS;AAI5E,SAASC,4BAA4B,QAAQ,4BAA2B;AAkBxE,OAAO,SAASC,aAAaC,YAAmC;IAC9D,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI;QACnD,MAAMC,MAAOF,QAAQE,GAAG,GAAGT,sBAAsBO,QAAQE,GAAG,EAAE;YAC5D;YACA;YACA;SACD;QACD,MAAMC,SAAUH,QAAQG,MAAM,GAAGJ,KAAKI,MAAM,GAAGT,6BAA6BO,MAAMD,WAAWI;QAE7FF,IAAIG,MAAM,GAAGN,KAAKM,MAAM,IAAIH,IAAIG,MAAM;QACtCH,IAAII,cAAc,GAAGP,KAAKO,cAAc,IAAIJ,IAAII,cAAc;QAC9DJ,IAAIK,KAAK,GAAGL,IAAIK,KAAK,IAAI,CAAC;QAE1B,MAAM,EAAEC,IAAI,EAAE,GAAGT;QAEjB,MAAMU,UAAU;YACdC,OAAO;YACPd;YACAe,OAAOZ,KAAKY,KAAK;YACjBC,MAAMb,KAAKa,IAAI;YACfC,YAAYd,KAAKc,UAAU;YAC3BX;YACAC;YACAK,MAAMA,QAAQ,OAAOA,SAAS,WAAWA,KAAKM,KAAK,CAAC,OAAOV;YAC3DW,OAAOhB,KAAKgB,KAAK;QACnB;QAEA,MAAMC,SAAS,MAAMxB,4BAA4BiB;QACjD,OAAOO;IACT;AACF"}
@@ -298,7 +298,7 @@ export const fieldToSchemaMap = {
298
298
  const { count = false, limit, page, sort, where } = args;
299
299
  const { req } = context;
300
300
  const draft = Boolean(args.draft ?? context.req.query?.draft);
301
- const select = resolveSelect(info, context.select);
301
+ const select = resolveSelect(info, context.select, context);
302
302
  const targetField = field.targetField;
303
303
  const fullWhere = combineQueries(where, Array.isArray(targetField.relationTo) ? {
304
304
  [field.on]: {
@@ -493,7 +493,7 @@ export const fieldToSchemaMap = {
493
493
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
494
494
  let relatedCollectionSlug = field.relationTo;
495
495
  const draft = Boolean(args.draft ?? context.req.query?.draft);
496
- const select = resolveSelect(info, context.select);
496
+ const select = resolveSelect(info, context.select, context);
497
497
  if (hasManyValues) {
498
498
  const results = [];
499
499
  const resultPromises = [];
@@ -838,7 +838,7 @@ export const fieldToSchemaMap = {
838
838
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
839
839
  let relatedCollectionSlug = field.relationTo;
840
840
  const draft = Boolean(args.draft ?? context.req.query?.draft);
841
- const select = resolveSelect(info, context.select);
841
+ const select = resolveSelect(info, context.select, context);
842
842
  if (hasManyValues) {
843
843
  const results = [];
844
844
  const resultPromises = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/fieldToSchemaMap.ts"],"sourcesContent":["import type { GraphQLArgumentConfig, GraphQLFieldConfig, GraphQLOutputType } from 'graphql'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n FlattenedJoinField,\n GraphQLInfo,\n GroupField,\n JoinField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextAdapter,\n RichTextField,\n RowField,\n SanitizedConfig,\n SelectField,\n SlugField,\n TabsField,\n TextareaField,\n TextField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLString,\n GraphQLUnionType,\n} from 'graphql'\nimport { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'\nimport { combineQueries, createDataloaderCacheKey, MissingEditorProp, toWords } from 'payload'\nimport { fieldAffectsData, tabHasName } from 'payload/shared'\n\nimport type { Context } from '../resolvers/types.js'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport { combineParentName } from '../utilities/combineParentName.js'\nimport { formatName } from '../utilities/formatName.js'\nimport { formatOptions } from '../utilities/formatOptions.js'\nimport { resolveSelect } from '../utilities/select.js'\nimport { buildObjectType, type ObjectTypeConfig } from './buildObjectType.js'\nimport { isFieldNullable } from './isFieldNullable.js'\nimport { withNullableType } from './withNullableType.js'\n\nfunction formattedNameResolver({\n field,\n ...rest\n}: { field: Field } & GraphQLFieldConfig<any, Context, any>): GraphQLFieldConfig<\n any,\n Context,\n any\n> {\n if ('name' in field) {\n if (formatName(field.name) !== field.name) {\n return {\n ...rest,\n extensions: { ...rest.extensions, field },\n resolve: (parent) => parent[field.name],\n }\n }\n }\n return rest\n}\n\ntype SharedArgs = {\n collectionSlug?: string\n config: SanitizedConfig\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n newlyCreatedBlockType: GraphQLObjectType\n objectTypeConfig: ObjectTypeConfig\n parentIsLocalized?: boolean\n parentName: string\n}\n\ntype GenericFieldToSchemaMap = (args: { field: Field } & SharedArgs) => ObjectTypeConfig\n\ntype FieldToSchemaMap = {\n array: (args: { field: ArrayField } & SharedArgs) => ObjectTypeConfig\n blocks: (args: { field: BlocksField } & SharedArgs) => ObjectTypeConfig\n checkbox: (args: { field: CheckboxField } & SharedArgs) => ObjectTypeConfig\n code: (args: { field: CodeField } & SharedArgs) => ObjectTypeConfig\n collapsible: (args: { field: CollapsibleField } & SharedArgs) => ObjectTypeConfig\n date: (args: { field: DateField } & SharedArgs) => ObjectTypeConfig\n email: (args: { field: EmailField } & SharedArgs) => ObjectTypeConfig\n group: (args: { field: GroupField } & SharedArgs) => ObjectTypeConfig\n join: (args: { field: JoinField } & SharedArgs) => ObjectTypeConfig\n json: (args: { field: JSONField } & SharedArgs) => ObjectTypeConfig\n number: (args: { field: NumberField } & SharedArgs) => ObjectTypeConfig\n point: (args: { field: PointField } & SharedArgs) => ObjectTypeConfig\n radio: (args: { field: RadioField } & SharedArgs) => ObjectTypeConfig\n relationship: (args: { field: RelationshipField } & SharedArgs) => ObjectTypeConfig\n richText: (args: { field: RichTextField } & SharedArgs) => ObjectTypeConfig\n row: (args: { field: RowField } & SharedArgs) => ObjectTypeConfig\n select: (args: { field: SelectField } & SharedArgs) => ObjectTypeConfig\n slug: (args: { field: SlugField } & SharedArgs) => ObjectTypeConfig\n tabs: (args: { field: TabsField } & SharedArgs) => ObjectTypeConfig\n text: (args: { field: TextField } & SharedArgs) => ObjectTypeConfig\n textarea: (args: { field: TextareaField } & SharedArgs) => ObjectTypeConfig\n upload: (args: { field: UploadField } & SharedArgs) => ObjectTypeConfig\n}\n\nexport const fieldToSchemaMap: FieldToSchemaMap = {\n slug: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n array: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable({ field, forceNullable, parentIsLocalized }),\n graphqlResult,\n parentIsLocalized: field.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.arrayTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n const arrayType = new GraphQLList(\n new GraphQLNonNull(graphqlResult.types.arrayTypes[interfaceName]),\n )\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({ type: arrayType, field, parentIsLocalized }) as GraphQLOutputType,\n field,\n }),\n }\n },\n blocks: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const blockTypes: GraphQLObjectType<any, any>[] = field.blocks.reduce((acc, _block) => {\n const blockSlug = typeof _block === 'string' ? _block : _block.slug\n if (!graphqlResult.types.blockTypes[blockSlug]) {\n // TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks\n const block =\n typeof _block === 'string' ? config.blocks.find((b) => b.slug === _block) : _block\n\n const interfaceName =\n block?.interfaceName || block?.graphQL?.singularName || toWords(block.slug, true)\n\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: [\n ...block.fields,\n {\n name: 'blockType',\n type: 'text',\n },\n ],\n forceNullable,\n graphqlResult,\n parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n // Store block slug in extensions for use in select building\n objectType.extensions = {\n ...objectType.extensions,\n blockSlug: block.slug,\n }\n graphqlResult.types.blockTypes[block.slug] = objectType\n }\n }\n\n if (graphqlResult.types.blockTypes[blockSlug]) {\n acc.push(graphqlResult.types.blockTypes[blockSlug])\n }\n\n return acc\n }, [])\n\n if (blockTypes.length === 0) {\n return objectTypeConfig\n }\n\n const fullName = combineParentName(parentName, toWords(field.name, true))\n\n const type = new GraphQLList(\n new GraphQLNonNull(\n new GraphQLUnionType({\n name: fullName,\n resolveType: (data) => graphqlResult.types.blockTypes[data.blockType].name,\n types: blockTypes,\n }),\n ),\n ) as GraphQLOutputType\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({ type, field, parentIsLocalized }) as GraphQLOutputType,\n field,\n }),\n }\n },\n checkbox: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLBoolean,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n code: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n collapsible: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) =>\n field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: objectTypeConfigWithCollapsibleFields,\n parentIsLocalized,\n parentName,\n })\n }\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig),\n date: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: DateTimeResolver,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n email: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: EmailAddressResolver,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n group: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n if (fieldAffectsData(field)) {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable({ field, forceNullable, parentIsLocalized }),\n graphqlResult,\n parentIsLocalized: field.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: {\n type: graphqlResult.types.groupTypes[interfaceName],\n extensions: { field },\n resolve: (parent, args, context) => {\n return {\n ...parent[field.name],\n _id: parent._id ?? parent.id,\n }\n },\n } satisfies GraphQLFieldConfig<any, Context, any>,\n }\n } else {\n return field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: objectTypeConfigWithCollapsibleFields,\n parentIsLocalized,\n parentName,\n })\n }\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig)\n }\n },\n join: ({ collectionSlug, field, graphqlResult, objectTypeConfig, parentName }) => {\n const joinName = combineParentName(parentName, toWords(field.name, true))\n\n const joinType: GraphQLFieldConfig<any, Context, any> = {\n type: new GraphQLObjectType({\n name: joinName,\n fields: {\n docs: {\n type: new GraphQLNonNull(\n Array.isArray(field.collection)\n ? GraphQLJSON\n : new GraphQLList(\n new GraphQLNonNull(graphqlResult.collections[field.collection].graphQL.type),\n ),\n ),\n },\n hasNextPage: { type: new GraphQLNonNull(GraphQLBoolean) },\n totalDocs: { type: GraphQLInt },\n },\n }),\n args: {\n count: { type: GraphQLBoolean },\n limit: {\n type: GraphQLInt,\n },\n page: {\n type: GraphQLInt,\n },\n sort: {\n type: GraphQLString,\n },\n where: {\n type: Array.isArray(field.collection)\n ? GraphQLJSON\n : graphqlResult.collections[field.collection].graphQL.whereInputType,\n },\n },\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const { collection } = field\n const { count = false, limit, page, sort, where } = args\n const { req } = context\n\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select)\n\n const targetField = (field as FlattenedJoinField).targetField\n\n const fullWhere = combineQueries(\n where,\n Array.isArray(targetField.relationTo)\n ? {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: parent._id ?? parent.id,\n },\n },\n }\n : {\n [field.on]: { equals: parent._id ?? parent.id },\n },\n )\n\n if (Array.isArray(collection)) {\n throw new Error('GraphQL with array of join.field.collection is not implemented')\n }\n\n if (count && limit === 0) {\n return await req.payload.count({\n collection,\n overrideAccess: false,\n req,\n where: fullWhere,\n })\n }\n\n const { docs, totalDocs } = await req.payload.find({\n collection,\n depth: 0,\n draft,\n fallbackLocale: req.fallbackLocale,\n // Fetch one extra document to determine if there are more documents beyond the requested limit (used for hasNextPage calculation).\n limit: typeof limit === 'number' && limit > 0 ? limit + 1 : 0,\n locale: req.locale,\n overrideAccess: false,\n page,\n pagination: count ? true : false,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n let shouldSlice = false\n\n if (typeof limit === 'number' && limit !== 0 && limit < docs.length) {\n shouldSlice = true\n }\n\n return {\n docs: shouldSlice ? docs.slice(0, -1) : docs,\n hasNextPage: limit === 0 ? false : limit < docs.length,\n ...(count ? { totalDocs } : {}),\n }\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: joinType,\n }\n },\n json: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLJSON,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n number: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => {\n const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: field?.hasMany === true ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }\n },\n point: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: new GraphQLList(new GraphQLNonNull(GraphQLFloat)),\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n radio: ({ field, forceNullable, objectTypeConfig, parentIsLocalized, parentName }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: new GraphQLEnumType({\n name: combineParentName(parentName, field.name),\n values: formatOptions(field),\n }),\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n relationship: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type: GraphQLOutputType\n let relationToType = null\n\n const graphQLCollections = config.collections.filter(\n (collectionConfig) => collectionConfig.graphQL !== false,\n )\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo\n .filter((relation) =>\n graphQLCollections.some((collection) => collection.slug === relation),\n )\n .reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n // Only pass collections that are GraphQL enabled\n const types = relationTo\n .filter((relation) => graphQLCollections.some((collection) => collection.slug === relation))\n .map((relation) => graphqlResult.collections[relation]?.graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }) as GraphQLOutputType,\n },\n },\n }) as GraphQLOutputType\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft: GraphQLArgumentConfig\n fallbackLocale: GraphQLArgumentConfig\n limit: GraphQLArgumentConfig\n locale: GraphQLArgumentConfig\n page: GraphQLArgumentConfig\n where: GraphQLArgumentConfig\n } = {} as any\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo])\n .filter((relation) => graphQLCollections.some((collection) => collection.slug === relation))\n .some((relation) => graphqlResult.collections[relation].config.versions?.drafts)\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship: GraphQLFieldConfig<any, Context, any> = {\n type: withNullableType({\n type: hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n // can be null if the related doc is deleted even if the field is required, unless hasMany\n forceNullable: !field.hasMany,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: relationshipArgs,\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n const isValidGraphQLCollection = isRelatedToManyCollections\n ? graphQLCollections.some((collection) => collectionSlug.includes(collection.slug))\n : graphQLCollections.some((collection) => collectionSlug === collection.slug)\n\n if (isValidGraphQLCollection) {\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results.push({\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n })\n } else {\n results.push(result)\n }\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n if (graphQLCollections.some((collection) => collection.slug === relatedCollectionSlug)) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: relationship,\n }\n },\n richText: ({ config, field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: GraphQLJSON,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: {\n depth: {\n type: GraphQLInt,\n },\n },\n extensions: {\n field,\n },\n async resolve(parent, args, context: Context) {\n let depth = config.defaultDepth\n if (typeof args.depth !== 'undefined') {\n depth = args.depth\n }\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n // RichText fields have their own depth argument in GraphQL.\n // This is why the populationPromise (which populates richtext fields like uploads and relationships)\n // is run here again, with the provided depth.\n // In the graphql find.ts resolver, the depth is then hard-coded to 0.\n // Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.\n if (editor?.graphQLPopulationPromises) {\n const fieldPromises = []\n const populationPromises = []\n const populateDepth =\n field?.maxDepth !== undefined && field?.maxDepth < depth ? field?.maxDepth : depth\n\n editor?.graphQLPopulationPromises({\n context,\n depth: populateDepth,\n draft: args.draft,\n field,\n fieldPromises,\n findMany: false,\n flattenLocales: false,\n overrideAccess: false,\n parentIsLocalized,\n populationPromises,\n req: context.req,\n showHiddenFields: false,\n siblingDoc: parent,\n })\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n }\n\n return parent[field.name]\n },\n },\n }),\n row: ({ field, objectTypeConfig, ...rest }) =>\n field.fields.reduce((objectTypeConfigWithRowFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n field: subField,\n objectTypeConfig: objectTypeConfigWithRowFields,\n ...rest,\n })\n }\n return objectTypeConfigWithRowFields\n }, objectTypeConfig),\n select: ({ field, forceNullable, objectTypeConfig, parentIsLocalized, parentName }) => {\n const fullName = combineParentName(parentName, field.name)\n\n let type: GraphQLOutputType = new GraphQLEnumType({\n name: fullName,\n values: formatOptions(field),\n })\n\n type = field.hasMany ? new GraphQLList(new GraphQLNonNull(type)) : type\n type = withNullableType({ type, field, forceNullable, parentIsLocalized }) as GraphQLOutputType\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({ type, field }),\n }\n },\n tabs: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) =>\n field.tabs.reduce((tabSchema, tab) => {\n if (tabHasName(tab)) {\n const interfaceName =\n tab?.interfaceName || combineParentName(parentName, toWords(tab.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n collectionSlug,\n config,\n fields: tab.fields,\n forceNullable,\n graphqlResult,\n parentIsLocalized: tab.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return tabSchema\n }\n\n return {\n ...tabSchema,\n [tab.name]: {\n type: graphqlResult.types.groupTypes[interfaceName],\n resolve(parent, args, context: Context) {\n return {\n ...parent[tab.name],\n _id: parent._id ?? parent.id,\n }\n },\n },\n }\n }\n\n return {\n ...tabSchema,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: subFieldSchema,\n parentIsLocalized,\n parentName,\n })\n }\n return subFieldSchema\n }, tabSchema),\n }\n }, objectTypeConfig),\n text: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type:\n field.hasMany === true\n ? new GraphQLList(new GraphQLNonNull(GraphQLString))\n : GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n textarea: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n upload: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type\n let relationToType = null\n\n const graphQLCollections = config.collections.filter(\n (collectionConfig) => collectionConfig.graphQL !== false,\n )\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo.reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n const types = relationTo.map((relation) => graphqlResult.collections[relation].graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }),\n },\n },\n })\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft?: GraphQLArgumentConfig\n fallbackLocale?: GraphQLArgumentConfig\n limit?: GraphQLArgumentConfig\n locale?: GraphQLArgumentConfig\n page?: GraphQLArgumentConfig\n where?: GraphQLArgumentConfig\n } = {} as any\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo]).some(\n (relation) => graphqlResult.collections[relation].config.versions?.drafts,\n )\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship: GraphQLFieldConfig<any, Context, any> = {\n type: withNullableType({\n type: hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n // can be null if the related doc is deleted even if the field is required, unless hasMany\n forceNullable: !field.hasMany,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: relationshipArgs,\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n const isValidGraphQLCollection = isRelatedToManyCollections\n ? graphQLCollections.some((collection) => collectionSlug.includes(collection.slug))\n : graphQLCollections.some((collection) => collectionSlug === collection.slug)\n\n if (isValidGraphQLCollection) {\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results.push({\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n })\n } else {\n results.push(result)\n }\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n if (graphQLCollections.some((collection) => collection.slug === relatedCollectionSlug)) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: relationship,\n }\n },\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLObjectType","GraphQLString","GraphQLUnionType","DateTimeResolver","EmailAddressResolver","combineQueries","createDataloaderCacheKey","MissingEditorProp","toWords","fieldAffectsData","tabHasName","GraphQLJSON","combineParentName","formatName","formatOptions","resolveSelect","buildObjectType","isFieldNullable","withNullableType","formattedNameResolver","field","rest","name","extensions","resolve","parent","fieldToSchemaMap","slug","forceNullable","objectTypeConfig","parentIsLocalized","type","array","config","graphqlResult","parentName","interfaceName","types","arrayTypes","objectType","fields","localized","Object","keys","getFields","length","arrayType","blocks","blockTypes","reduce","acc","_block","blockSlug","block","find","b","graphQL","singularName","push","fullName","resolveType","data","blockType","checkbox","code","collapsible","collectionSlug","newlyCreatedBlockType","objectTypeConfigWithCollapsibleFields","subField","addSubField","date","email","group","groupTypes","args","context","_id","id","join","joinName","joinType","docs","Array","isArray","collection","collections","hasNextPage","totalDocs","count","limit","page","sort","where","whereInputType","complexity","info","req","draft","Boolean","query","select","targetField","fullWhere","relationTo","on","equals","value","Error","payload","overrideAccess","depth","fallbackLocale","locale","pagination","shouldSlice","slice","json","number","hasMany","point","radio","values","relationship","isRelatedToManyCollections","hasManyValues","relationshipName","relationToType","graphQLCollections","filter","collectionConfig","relation","some","relations","map","relationshipArgs","relationsUseDrafts","versions","drafts","localization","localeInputType","fallbackLocaleInputType","relatedCollectionSlug","results","resultPromises","createPopulationPromise","relatedDoc","i","isValidGraphQLCollection","includes","result","payloadDataLoader","load","currentDepth","docID","showHiddenFields","transactionID","forEach","Promise","all","relatedDocument","richText","defaultDepth","editor","graphQLPopulationPromises","fieldPromises","populationPromises","populateDepth","maxDepth","undefined","findMany","flattenLocales","siblingDoc","row","objectTypeConfigWithRowFields","tabs","tabSchema","tab","subFieldSchema","text","textarea","upload"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/fieldToSchemaMap.ts"],"sourcesContent":["import type { GraphQLArgumentConfig, GraphQLFieldConfig, GraphQLOutputType } from 'graphql'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n FlattenedJoinField,\n GraphQLInfo,\n GroupField,\n JoinField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextAdapter,\n RichTextField,\n RowField,\n SanitizedConfig,\n SelectField,\n SlugField,\n TabsField,\n TextareaField,\n TextField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLString,\n GraphQLUnionType,\n} from 'graphql'\nimport { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'\nimport { combineQueries, createDataloaderCacheKey, MissingEditorProp, toWords } from 'payload'\nimport { fieldAffectsData, tabHasName } from 'payload/shared'\n\nimport type { Context } from '../resolvers/types.js'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport { combineParentName } from '../utilities/combineParentName.js'\nimport { formatName } from '../utilities/formatName.js'\nimport { formatOptions } from '../utilities/formatOptions.js'\nimport { resolveSelect } from '../utilities/select.js'\nimport { buildObjectType, type ObjectTypeConfig } from './buildObjectType.js'\nimport { isFieldNullable } from './isFieldNullable.js'\nimport { withNullableType } from './withNullableType.js'\n\nfunction formattedNameResolver({\n field,\n ...rest\n}: { field: Field } & GraphQLFieldConfig<any, Context, any>): GraphQLFieldConfig<\n any,\n Context,\n any\n> {\n if ('name' in field) {\n if (formatName(field.name) !== field.name) {\n return {\n ...rest,\n extensions: { ...rest.extensions, field },\n resolve: (parent) => parent[field.name],\n }\n }\n }\n return rest\n}\n\ntype SharedArgs = {\n collectionSlug?: string\n config: SanitizedConfig\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n newlyCreatedBlockType: GraphQLObjectType\n objectTypeConfig: ObjectTypeConfig\n parentIsLocalized?: boolean\n parentName: string\n}\n\ntype GenericFieldToSchemaMap = (args: { field: Field } & SharedArgs) => ObjectTypeConfig\n\ntype FieldToSchemaMap = {\n array: (args: { field: ArrayField } & SharedArgs) => ObjectTypeConfig\n blocks: (args: { field: BlocksField } & SharedArgs) => ObjectTypeConfig\n checkbox: (args: { field: CheckboxField } & SharedArgs) => ObjectTypeConfig\n code: (args: { field: CodeField } & SharedArgs) => ObjectTypeConfig\n collapsible: (args: { field: CollapsibleField } & SharedArgs) => ObjectTypeConfig\n date: (args: { field: DateField } & SharedArgs) => ObjectTypeConfig\n email: (args: { field: EmailField } & SharedArgs) => ObjectTypeConfig\n group: (args: { field: GroupField } & SharedArgs) => ObjectTypeConfig\n join: (args: { field: JoinField } & SharedArgs) => ObjectTypeConfig\n json: (args: { field: JSONField } & SharedArgs) => ObjectTypeConfig\n number: (args: { field: NumberField } & SharedArgs) => ObjectTypeConfig\n point: (args: { field: PointField } & SharedArgs) => ObjectTypeConfig\n radio: (args: { field: RadioField } & SharedArgs) => ObjectTypeConfig\n relationship: (args: { field: RelationshipField } & SharedArgs) => ObjectTypeConfig\n richText: (args: { field: RichTextField } & SharedArgs) => ObjectTypeConfig\n row: (args: { field: RowField } & SharedArgs) => ObjectTypeConfig\n select: (args: { field: SelectField } & SharedArgs) => ObjectTypeConfig\n slug: (args: { field: SlugField } & SharedArgs) => ObjectTypeConfig\n tabs: (args: { field: TabsField } & SharedArgs) => ObjectTypeConfig\n text: (args: { field: TextField } & SharedArgs) => ObjectTypeConfig\n textarea: (args: { field: TextareaField } & SharedArgs) => ObjectTypeConfig\n upload: (args: { field: UploadField } & SharedArgs) => ObjectTypeConfig\n}\n\nexport const fieldToSchemaMap: FieldToSchemaMap = {\n slug: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n array: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable({ field, forceNullable, parentIsLocalized }),\n graphqlResult,\n parentIsLocalized: field.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.arrayTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n const arrayType = new GraphQLList(\n new GraphQLNonNull(graphqlResult.types.arrayTypes[interfaceName]),\n )\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({ type: arrayType, field, parentIsLocalized }) as GraphQLOutputType,\n field,\n }),\n }\n },\n blocks: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const blockTypes: GraphQLObjectType<any, any>[] = field.blocks.reduce((acc, _block) => {\n const blockSlug = typeof _block === 'string' ? _block : _block.slug\n if (!graphqlResult.types.blockTypes[blockSlug]) {\n // TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks\n const block =\n typeof _block === 'string' ? config.blocks.find((b) => b.slug === _block) : _block\n\n const interfaceName =\n block?.interfaceName || block?.graphQL?.singularName || toWords(block.slug, true)\n\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: [\n ...block.fields,\n {\n name: 'blockType',\n type: 'text',\n },\n ],\n forceNullable,\n graphqlResult,\n parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n // Store block slug in extensions for use in select building\n objectType.extensions = {\n ...objectType.extensions,\n blockSlug: block.slug,\n }\n graphqlResult.types.blockTypes[block.slug] = objectType\n }\n }\n\n if (graphqlResult.types.blockTypes[blockSlug]) {\n acc.push(graphqlResult.types.blockTypes[blockSlug])\n }\n\n return acc\n }, [])\n\n if (blockTypes.length === 0) {\n return objectTypeConfig\n }\n\n const fullName = combineParentName(parentName, toWords(field.name, true))\n\n const type = new GraphQLList(\n new GraphQLNonNull(\n new GraphQLUnionType({\n name: fullName,\n resolveType: (data) => graphqlResult.types.blockTypes[data.blockType].name,\n types: blockTypes,\n }),\n ),\n ) as GraphQLOutputType\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({ type, field, parentIsLocalized }) as GraphQLOutputType,\n field,\n }),\n }\n },\n checkbox: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLBoolean,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n code: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n collapsible: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) =>\n field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: objectTypeConfigWithCollapsibleFields,\n parentIsLocalized,\n parentName,\n })\n }\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig),\n date: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: DateTimeResolver,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n email: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: EmailAddressResolver,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n group: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n if (fieldAffectsData(field)) {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable({ field, forceNullable, parentIsLocalized }),\n graphqlResult,\n parentIsLocalized: field.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: {\n type: graphqlResult.types.groupTypes[interfaceName],\n extensions: { field },\n resolve: (parent, args, context) => {\n return {\n ...parent[field.name],\n _id: parent._id ?? parent.id,\n }\n },\n } satisfies GraphQLFieldConfig<any, Context, any>,\n }\n } else {\n return field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: objectTypeConfigWithCollapsibleFields,\n parentIsLocalized,\n parentName,\n })\n }\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig)\n }\n },\n join: ({ collectionSlug, field, graphqlResult, objectTypeConfig, parentName }) => {\n const joinName = combineParentName(parentName, toWords(field.name, true))\n\n const joinType: GraphQLFieldConfig<any, Context, any> = {\n type: new GraphQLObjectType({\n name: joinName,\n fields: {\n docs: {\n type: new GraphQLNonNull(\n Array.isArray(field.collection)\n ? GraphQLJSON\n : new GraphQLList(\n new GraphQLNonNull(graphqlResult.collections[field.collection].graphQL.type),\n ),\n ),\n },\n hasNextPage: { type: new GraphQLNonNull(GraphQLBoolean) },\n totalDocs: { type: GraphQLInt },\n },\n }),\n args: {\n count: { type: GraphQLBoolean },\n limit: {\n type: GraphQLInt,\n },\n page: {\n type: GraphQLInt,\n },\n sort: {\n type: GraphQLString,\n },\n where: {\n type: Array.isArray(field.collection)\n ? GraphQLJSON\n : graphqlResult.collections[field.collection].graphQL.whereInputType,\n },\n },\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const { collection } = field\n const { count = false, limit, page, sort, where } = args\n const { req } = context\n\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select, context)\n\n const targetField = (field as FlattenedJoinField).targetField\n\n const fullWhere = combineQueries(\n where,\n Array.isArray(targetField.relationTo)\n ? {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: parent._id ?? parent.id,\n },\n },\n }\n : {\n [field.on]: { equals: parent._id ?? parent.id },\n },\n )\n\n if (Array.isArray(collection)) {\n throw new Error('GraphQL with array of join.field.collection is not implemented')\n }\n\n if (count && limit === 0) {\n return await req.payload.count({\n collection,\n overrideAccess: false,\n req,\n where: fullWhere,\n })\n }\n\n const { docs, totalDocs } = await req.payload.find({\n collection,\n depth: 0,\n draft,\n fallbackLocale: req.fallbackLocale,\n // Fetch one extra document to determine if there are more documents beyond the requested limit (used for hasNextPage calculation).\n limit: typeof limit === 'number' && limit > 0 ? limit + 1 : 0,\n locale: req.locale,\n overrideAccess: false,\n page,\n pagination: count ? true : false,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n let shouldSlice = false\n\n if (typeof limit === 'number' && limit !== 0 && limit < docs.length) {\n shouldSlice = true\n }\n\n return {\n docs: shouldSlice ? docs.slice(0, -1) : docs,\n hasNextPage: limit === 0 ? false : limit < docs.length,\n ...(count ? { totalDocs } : {}),\n }\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: joinType,\n }\n },\n json: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLJSON,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n number: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => {\n const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: field?.hasMany === true ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }\n },\n point: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: new GraphQLList(new GraphQLNonNull(GraphQLFloat)),\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n radio: ({ field, forceNullable, objectTypeConfig, parentIsLocalized, parentName }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: new GraphQLEnumType({\n name: combineParentName(parentName, field.name),\n values: formatOptions(field),\n }),\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n relationship: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type: GraphQLOutputType\n let relationToType = null\n\n const graphQLCollections = config.collections.filter(\n (collectionConfig) => collectionConfig.graphQL !== false,\n )\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo\n .filter((relation) =>\n graphQLCollections.some((collection) => collection.slug === relation),\n )\n .reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n // Only pass collections that are GraphQL enabled\n const types = relationTo\n .filter((relation) => graphQLCollections.some((collection) => collection.slug === relation))\n .map((relation) => graphqlResult.collections[relation]?.graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }) as GraphQLOutputType,\n },\n },\n }) as GraphQLOutputType\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft: GraphQLArgumentConfig\n fallbackLocale: GraphQLArgumentConfig\n limit: GraphQLArgumentConfig\n locale: GraphQLArgumentConfig\n page: GraphQLArgumentConfig\n where: GraphQLArgumentConfig\n } = {} as any\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo])\n .filter((relation) => graphQLCollections.some((collection) => collection.slug === relation))\n .some((relation) => graphqlResult.collections[relation].config.versions?.drafts)\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship: GraphQLFieldConfig<any, Context, any> = {\n type: withNullableType({\n type: hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n // can be null if the related doc is deleted even if the field is required, unless hasMany\n forceNullable: !field.hasMany,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: relationshipArgs,\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select, context)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n const isValidGraphQLCollection = isRelatedToManyCollections\n ? graphQLCollections.some((collection) => collectionSlug.includes(collection.slug))\n : graphQLCollections.some((collection) => collectionSlug === collection.slug)\n\n if (isValidGraphQLCollection) {\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results.push({\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n })\n } else {\n results.push(result)\n }\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n if (graphQLCollections.some((collection) => collection.slug === relatedCollectionSlug)) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: relationship,\n }\n },\n richText: ({ config, field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: GraphQLJSON,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: {\n depth: {\n type: GraphQLInt,\n },\n },\n extensions: {\n field,\n },\n async resolve(parent, args, context: Context) {\n let depth = config.defaultDepth\n if (typeof args.depth !== 'undefined') {\n depth = args.depth\n }\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n // RichText fields have their own depth argument in GraphQL.\n // This is why the populationPromise (which populates richtext fields like uploads and relationships)\n // is run here again, with the provided depth.\n // In the graphql find.ts resolver, the depth is then hard-coded to 0.\n // Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.\n if (editor?.graphQLPopulationPromises) {\n const fieldPromises = []\n const populationPromises = []\n const populateDepth =\n field?.maxDepth !== undefined && field?.maxDepth < depth ? field?.maxDepth : depth\n\n editor?.graphQLPopulationPromises({\n context,\n depth: populateDepth,\n draft: args.draft,\n field,\n fieldPromises,\n findMany: false,\n flattenLocales: false,\n overrideAccess: false,\n parentIsLocalized,\n populationPromises,\n req: context.req,\n showHiddenFields: false,\n siblingDoc: parent,\n })\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n }\n\n return parent[field.name]\n },\n },\n }),\n row: ({ field, objectTypeConfig, ...rest }) =>\n field.fields.reduce((objectTypeConfigWithRowFields, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n field: subField,\n objectTypeConfig: objectTypeConfigWithRowFields,\n ...rest,\n })\n }\n return objectTypeConfigWithRowFields\n }, objectTypeConfig),\n select: ({ field, forceNullable, objectTypeConfig, parentIsLocalized, parentName }) => {\n const fullName = combineParentName(parentName, field.name)\n\n let type: GraphQLOutputType = new GraphQLEnumType({\n name: fullName,\n values: formatOptions(field),\n })\n\n type = field.hasMany ? new GraphQLList(new GraphQLNonNull(type)) : type\n type = withNullableType({ type, field, forceNullable, parentIsLocalized }) as GraphQLOutputType\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({ type, field }),\n }\n },\n tabs: ({\n collectionSlug,\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) =>\n field.tabs.reduce((tabSchema, tab) => {\n if (tabHasName(tab)) {\n const interfaceName =\n tab?.interfaceName || combineParentName(parentName, toWords(tab.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n collectionSlug,\n config,\n fields: tab.fields,\n forceNullable,\n graphqlResult,\n parentIsLocalized: tab.localized || parentIsLocalized,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return tabSchema\n }\n\n return {\n ...tabSchema,\n [tab.name]: {\n type: graphqlResult.types.groupTypes[interfaceName],\n resolve(parent, args, context: Context) {\n return {\n ...parent[tab.name],\n _id: parent._id ?? parent.id,\n }\n },\n },\n }\n }\n\n return {\n ...tabSchema,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField: GenericFieldToSchemaMap = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField({\n collectionSlug,\n config,\n field: subField,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig: subFieldSchema,\n parentIsLocalized,\n parentName,\n })\n }\n return subFieldSchema\n }, tabSchema),\n }\n }, objectTypeConfig),\n text: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type:\n field.hasMany === true\n ? new GraphQLList(new GraphQLNonNull(GraphQLString))\n : GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n textarea: ({ field, forceNullable, objectTypeConfig, parentIsLocalized }) => ({\n ...objectTypeConfig,\n [formatName(field.name)]: formattedNameResolver({\n type: withNullableType({\n type: GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }) as GraphQLOutputType,\n field,\n }),\n }),\n upload: ({\n config,\n field,\n forceNullable,\n graphqlResult,\n newlyCreatedBlockType,\n objectTypeConfig,\n parentIsLocalized,\n parentName,\n }) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type\n let relationToType = null\n\n const graphQLCollections = config.collections.filter(\n (collectionConfig) => collectionConfig.graphQL !== false,\n )\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo.reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n const types = relationTo.map((relation) => graphqlResult.collections[relation].graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }),\n },\n },\n })\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft?: GraphQLArgumentConfig\n fallbackLocale?: GraphQLArgumentConfig\n limit?: GraphQLArgumentConfig\n locale?: GraphQLArgumentConfig\n page?: GraphQLArgumentConfig\n where?: GraphQLArgumentConfig\n } = {} as any\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo]).some(\n (relation) => graphqlResult.collections[relation].config.versions?.drafts,\n )\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship: GraphQLFieldConfig<any, Context, any> = {\n type: withNullableType({\n type: hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n field,\n // can be null if the related doc is deleted even if the field is required, unless hasMany\n forceNullable: !field.hasMany,\n parentIsLocalized,\n }) as GraphQLOutputType,\n args: relationshipArgs,\n extensions: {\n complexity: typeof field?.graphQL?.complexity === 'number' ? field.graphQL.complexity : 10,\n field,\n },\n async resolve(parent, args, context, info) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n const select = resolveSelect(info, context.select, context)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n const isValidGraphQLCollection = isRelatedToManyCollections\n ? graphQLCollections.some((collection) => collectionSlug.includes(collection.slug))\n : graphQLCollections.some((collection) => collectionSlug === collection.slug)\n\n if (isValidGraphQLCollection) {\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results.push({\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n })\n } else {\n results.push(result)\n }\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n if (graphQLCollections.some((collection) => collection.slug === relatedCollectionSlug)) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n select,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [formatName(field.name)]: relationship,\n }\n },\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLObjectType","GraphQLString","GraphQLUnionType","DateTimeResolver","EmailAddressResolver","combineQueries","createDataloaderCacheKey","MissingEditorProp","toWords","fieldAffectsData","tabHasName","GraphQLJSON","combineParentName","formatName","formatOptions","resolveSelect","buildObjectType","isFieldNullable","withNullableType","formattedNameResolver","field","rest","name","extensions","resolve","parent","fieldToSchemaMap","slug","forceNullable","objectTypeConfig","parentIsLocalized","type","array","config","graphqlResult","parentName","interfaceName","types","arrayTypes","objectType","fields","localized","Object","keys","getFields","length","arrayType","blocks","blockTypes","reduce","acc","_block","blockSlug","block","find","b","graphQL","singularName","push","fullName","resolveType","data","blockType","checkbox","code","collapsible","collectionSlug","newlyCreatedBlockType","objectTypeConfigWithCollapsibleFields","subField","addSubField","date","email","group","groupTypes","args","context","_id","id","join","joinName","joinType","docs","Array","isArray","collection","collections","hasNextPage","totalDocs","count","limit","page","sort","where","whereInputType","complexity","info","req","draft","Boolean","query","select","targetField","fullWhere","relationTo","on","equals","value","Error","payload","overrideAccess","depth","fallbackLocale","locale","pagination","shouldSlice","slice","json","number","hasMany","point","radio","values","relationship","isRelatedToManyCollections","hasManyValues","relationshipName","relationToType","graphQLCollections","filter","collectionConfig","relation","some","relations","map","relationshipArgs","relationsUseDrafts","versions","drafts","localization","localeInputType","fallbackLocaleInputType","relatedCollectionSlug","results","resultPromises","createPopulationPromise","relatedDoc","i","isValidGraphQLCollection","includes","result","payloadDataLoader","load","currentDepth","docID","showHiddenFields","transactionID","forEach","Promise","all","relatedDocument","richText","defaultDepth","editor","graphQLPopulationPromises","fieldPromises","populationPromises","populateDepth","maxDepth","undefined","findMany","flattenLocales","siblingDoc","row","objectTypeConfigWithRowFields","tabs","tabSchema","tab","subFieldSchema","text","textarea","upload"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import type { GraphQLResolveInfo } from 'graphql';
2
2
  import type { TypedCollectionSelect } from 'payload';
3
- export declare function buildSelectForCollection(info: GraphQLResolveInfo): SelectType;
4
- export declare function buildSelectForCollectionMany(info: GraphQLResolveInfo): SelectType;
5
- export declare function resolveSelect(info: GraphQLResolveInfo, select: SelectType): SelectType;
3
+ import type { Context } from '../resolvers/types.js';
4
+ export declare function buildSelectForCollection(info: GraphQLResolveInfo, context?: Context): SelectType;
5
+ export declare function buildSelectForCollectionMany(info: GraphQLResolveInfo, context?: Context): SelectType;
6
+ export declare function resolveSelect(info: GraphQLResolveInfo, select: SelectType, context?: Context): SelectType;
6
7
  type SelectType = TypedCollectionSelect['any'];
7
8
  export {};
8
9
  //# sourceMappingURL=select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/utilities/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,kBAAkB,EAAoB,MAAM,SAAS,CAAA;AACtF,OAAO,KAAK,EAA2C,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAI7F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,CAE7E;AACD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,CAEjF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAqCtF;AAoFD,KAAK,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/utilities/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,kBAAkB,EAAoB,MAAM,SAAS,CAAA;AACtF,OAAO,KAAK,EAKV,qBAAqB,EAEtB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AASpD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,CAMhG;AACD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,kBAAkB,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,UAAU,CAMZ;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,UAAU,CA0BZ;AA+JD,KAAK,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA"}
@@ -1,52 +1,47 @@
1
1
  import { getNamedType, isInterfaceType, isObjectType, isUnionType, Kind } from 'graphql';
2
- export function buildSelectForCollection(info) {
2
+ const selectRootPathsByContext = new WeakMap();
3
+ export function buildSelectForCollection(info, context) {
4
+ if (context) {
5
+ registerSelectRootPath(context, info);
6
+ }
3
7
  return buildSelect(info);
4
8
  }
5
- export function buildSelectForCollectionMany(info) {
6
- return buildSelect(info).docs;
9
+ export function buildSelectForCollectionMany(info, context) {
10
+ if (context) {
11
+ registerSelectRootPath(context, info);
12
+ }
13
+ return buildSelect(info)?.docs;
7
14
  }
8
- export function resolveSelect(info, select) {
9
- if (select) {
10
- const traversePath = [];
11
- const traverseTree = (path)=>{
12
- const pathKey = path.key;
13
- const pathType = info.schema.getType(path.typename);
14
- if (pathType) {
15
- const field = pathType?.getFields()?.[pathKey]?.extensions?.field;
16
- if (field?.type === 'join') {
17
- path = path.prev;
18
- traversePath.unshift('docs');
19
- }
20
- if (field?.type === 'relationship' && Array.isArray(field.relationTo)) {
21
- path = path.prev;
22
- traversePath.unshift('value');
23
- }
24
- if (field) {
25
- traversePath.unshift(field.name);
26
- }
27
- }
28
- if (path.prev) {
29
- traverseTree(path.prev);
30
- }
31
- };
32
- traverseTree(info.path);
33
- traversePath.forEach((key)=>{
34
- select = select?.[key];
35
- });
15
+ export function resolveSelect(info, select, context) {
16
+ const isSelectEnabled = context ? hasSelectRootPath(context, info) : typeof select !== 'undefined';
17
+ if (!isSelectEnabled) {
18
+ return undefined;
36
19
  }
37
- return select;
20
+ const field = info.parentType.getFields()[info.fieldName]?.extensions?.field;
21
+ const fieldSelect = buildSelect(info);
22
+ if (field?.type === 'join') {
23
+ return fieldSelect?.docs;
24
+ }
25
+ if ((field?.type === 'relationship' || field?.type === 'upload') && Array.isArray(field.relationTo)) {
26
+ return fieldSelect?.value;
27
+ }
28
+ return fieldSelect;
38
29
  }
39
30
  function buildSelect(info) {
40
31
  const returnType = getNamedType(info.returnType);
41
- const selectionSet = info.fieldNodes[0].selectionSet;
42
32
  if (!returnType) {
43
33
  return;
44
34
  }
45
- return buildSelectTree(info, selectionSet, returnType);
35
+ return info.fieldNodes.reduce((fieldTree, fieldNode)=>{
36
+ if (!fieldNode.selectionSet) {
37
+ return fieldTree;
38
+ }
39
+ return mergeSelectTrees(fieldTree, buildSelectTree(info, fieldNode.selectionSet, returnType));
40
+ }, {});
46
41
  }
47
42
  function buildSelectTree(info, selectionSet, type) {
48
43
  const fieldMap = type.getFields?.();
49
- const fieldTree = {};
44
+ let fieldTree = {};
50
45
  for (const selection of selectionSet.selections){
51
46
  switch(selection.kind){
52
47
  case Kind.FIELD:
@@ -64,11 +59,15 @@ function buildSelectTree(info, selectionSet, type) {
64
59
  if (selection.selectionSet) {
65
60
  const type = getNamedType(fieldSchema.type);
66
61
  if (isObjectType(type) || isInterfaceType(type) || isUnionType(type)) {
67
- fieldTree[fieldNameOriginal] = buildSelectTree(info, selection.selectionSet, type);
62
+ fieldTree = mergeSelectTrees(fieldTree, {
63
+ [fieldNameOriginal]: buildSelectTree(info, selection.selectionSet, type)
64
+ });
68
65
  continue;
69
66
  }
70
67
  }
71
- fieldTree[fieldNameOriginal] = true;
68
+ fieldTree = mergeSelectTrees(fieldTree, {
69
+ [fieldNameOriginal]: true
70
+ });
72
71
  break;
73
72
  }
74
73
  case Kind.FRAGMENT_SPREAD:
@@ -77,7 +76,7 @@ function buildSelectTree(info, selectionSet, type) {
77
76
  const fragment = info.fragments[fragmentName];
78
77
  const fragmentType = fragment && info.schema.getType(fragment.typeCondition.name.value);
79
78
  if (fragmentType) {
80
- Object.assign(fieldTree, buildSelectTree(info, fragment.selectionSet, fragmentType));
79
+ fieldTree = mergeSelectTrees(fieldTree, buildFragmentSelectTree(info, fragment.selectionSet, fragmentType, type));
81
80
  }
82
81
  break;
83
82
  }
@@ -85,13 +84,7 @@ function buildSelectTree(info, selectionSet, type) {
85
84
  {
86
85
  const fragmentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
87
86
  if (fragmentType) {
88
- // Block types in unions need selections nested under their slug
89
- const blockSlug = fragmentType.extensions?.blockSlug;
90
- if (blockSlug && isUnionType(type)) {
91
- fieldTree[blockSlug] = buildSelectTree(info, selection.selectionSet, fragmentType);
92
- } else {
93
- Object.assign(fieldTree, buildSelectTree(info, selection.selectionSet, fragmentType));
94
- }
87
+ fieldTree = mergeSelectTrees(fieldTree, buildFragmentSelectTree(info, selection.selectionSet, fragmentType, type));
95
88
  }
96
89
  break;
97
90
  }
@@ -99,5 +92,50 @@ function buildSelectTree(info, selectionSet, type) {
99
92
  }
100
93
  return fieldTree;
101
94
  }
95
+ function buildFragmentSelectTree(info, selectionSet, fragmentType, parentType) {
96
+ const fragmentSelectTree = buildSelectTree(info, selectionSet, fragmentType);
97
+ const blockSlug = fragmentType.extensions?.blockSlug;
98
+ if (blockSlug && isUnionType(parentType)) {
99
+ return {
100
+ [blockSlug]: fragmentSelectTree
101
+ };
102
+ }
103
+ return fragmentSelectTree;
104
+ }
105
+ function getRootPathKey(path) {
106
+ while(path.prev){
107
+ path = path.prev;
108
+ }
109
+ return path.key;
110
+ }
111
+ function hasSelectRootPath(context, info) {
112
+ return Boolean(selectRootPathsByContext.get(context)?.get(info.operation)?.has(getRootPathKey(info.path)));
113
+ }
114
+ function isSelectTree(value) {
115
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
116
+ }
117
+ function mergeSelectTrees(firstTree, secondTree) {
118
+ const mergedTree = {
119
+ ...firstTree
120
+ };
121
+ for (const [fieldName, fieldSelect] of Object.entries(secondTree)){
122
+ const existingFieldSelect = mergedTree[fieldName];
123
+ mergedTree[fieldName] = isSelectTree(existingFieldSelect) && isSelectTree(fieldSelect) ? mergeSelectTrees(existingFieldSelect, fieldSelect) : fieldSelect;
124
+ }
125
+ return mergedTree;
126
+ }
127
+ function registerSelectRootPath(context, info) {
128
+ let selectRootPathsByOperation = selectRootPathsByContext.get(context);
129
+ if (!selectRootPathsByOperation) {
130
+ selectRootPathsByOperation = new WeakMap();
131
+ selectRootPathsByContext.set(context, selectRootPathsByOperation);
132
+ }
133
+ let selectRootPaths = selectRootPathsByOperation.get(info.operation);
134
+ if (!selectRootPaths) {
135
+ selectRootPaths = new Set();
136
+ selectRootPathsByOperation.set(info.operation, selectRootPaths);
137
+ }
138
+ selectRootPaths.add(getRootPathKey(info.path));
139
+ }
102
140
 
103
141
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/select.ts"],"sourcesContent":["import type { GraphQLObjectType, GraphQLResolveInfo, SelectionSetNode } from 'graphql'\nimport type { FieldBase, JoinField, RelationshipField, TypedCollectionSelect } from 'payload'\n\nimport { getNamedType, isInterfaceType, isObjectType, isUnionType, Kind } from 'graphql'\n\nexport function buildSelectForCollection(info: GraphQLResolveInfo): SelectType {\n return buildSelect(info)\n}\nexport function buildSelectForCollectionMany(info: GraphQLResolveInfo): SelectType {\n return buildSelect(info).docs as SelectType\n}\n\nexport function resolveSelect(info: GraphQLResolveInfo, select: SelectType): SelectType {\n if (select) {\n const traversePath: string[] = []\n const traverseTree = (path: GraphQLResolveInfo['path']) => {\n const pathKey = path.key\n const pathType = info.schema.getType(path.typename) as GraphQLObjectType\n\n if (pathType) {\n const field = pathType?.getFields()?.[pathKey]?.extensions?.field as\n | JoinField\n | RelationshipField\n\n if (field?.type === 'join') {\n path = path.prev\n traversePath.unshift('docs')\n }\n if (field?.type === 'relationship' && Array.isArray(field.relationTo)) {\n path = path.prev\n traversePath.unshift('value')\n }\n if (field) {\n traversePath.unshift(field.name)\n }\n }\n\n if (path.prev) {\n traverseTree(path.prev)\n }\n }\n\n traverseTree(info.path)\n traversePath.forEach((key) => {\n select = select?.[key] as SelectType\n })\n }\n\n return select\n}\n\nfunction buildSelect(info: GraphQLResolveInfo) {\n const returnType = getNamedType(info.returnType) as GraphQLObjectType\n const selectionSet = info.fieldNodes[0].selectionSet\n\n if (!returnType) {\n return\n }\n\n return buildSelectTree(info, selectionSet, returnType)\n}\nfunction buildSelectTree(\n info: GraphQLResolveInfo,\n selectionSet: SelectionSetNode,\n type: GraphQLObjectType,\n): SelectType {\n const fieldMap = type.getFields?.()\n const fieldTree: SelectType = {}\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n const fieldName = selection.name.value\n const fieldSchema = fieldMap?.[fieldName]\n\n const field = fieldSchema?.extensions?.field as FieldBase\n const fieldNameOriginal = field?.name || fieldName\n\n if (fieldName === '__typename') {\n continue\n }\n if (fieldSchema == undefined) {\n continue\n }\n\n if (selection.selectionSet) {\n const type = getNamedType(fieldSchema.type) as GraphQLObjectType\n\n if (isObjectType(type) || isInterfaceType(type) || isUnionType(type)) {\n fieldTree[fieldNameOriginal] = buildSelectTree(info, selection.selectionSet, type)\n continue\n }\n }\n\n fieldTree[fieldNameOriginal] = true\n break\n }\n\n case Kind.FRAGMENT_SPREAD: {\n const fragmentName = selection.name.value\n const fragment = info.fragments[fragmentName]\n const fragmentType =\n fragment && (info.schema.getType(fragment.typeCondition.name.value) as GraphQLObjectType)\n\n if (fragmentType) {\n Object.assign(fieldTree, buildSelectTree(info, fragment.selectionSet, fragmentType))\n }\n break\n }\n\n case Kind.INLINE_FRAGMENT: {\n const fragmentType = selection.typeCondition\n ? (info.schema.getType(selection.typeCondition.name.value) as GraphQLObjectType)\n : type\n\n if (fragmentType) {\n // Block types in unions need selections nested under their slug\n const blockSlug = fragmentType.extensions?.blockSlug as string | undefined\n\n if (blockSlug && isUnionType(type)) {\n fieldTree[blockSlug] = buildSelectTree(info, selection.selectionSet, fragmentType)\n } else {\n Object.assign(fieldTree, buildSelectTree(info, selection.selectionSet, fragmentType))\n }\n }\n break\n }\n }\n }\n\n return fieldTree\n}\n\ntype SelectType = TypedCollectionSelect['any']\n"],"names":["getNamedType","isInterfaceType","isObjectType","isUnionType","Kind","buildSelectForCollection","info","buildSelect","buildSelectForCollectionMany","docs","resolveSelect","select","traversePath","traverseTree","path","pathKey","key","pathType","schema","getType","typename","field","getFields","extensions","type","prev","unshift","Array","isArray","relationTo","name","forEach","returnType","selectionSet","fieldNodes","buildSelectTree","fieldMap","fieldTree","selection","selections","kind","FIELD","fieldName","value","fieldSchema","fieldNameOriginal","undefined","FRAGMENT_SPREAD","fragmentName","fragment","fragments","fragmentType","typeCondition","Object","assign","INLINE_FRAGMENT","blockSlug"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/select.ts"],"sourcesContent":["import type { GraphQLObjectType, GraphQLResolveInfo, SelectionSetNode } from 'graphql'\nimport type {\n FieldBase,\n JoinField,\n RelationshipField,\n SelectIncludeType,\n TypedCollectionSelect,\n UploadField,\n} from 'payload'\n\nimport { getNamedType, isInterfaceType, isObjectType, isUnionType, Kind } from 'graphql'\n\nimport type { Context } from '../resolvers/types.js'\n\ntype SelectRootPathsByOperation = WeakMap<\n GraphQLResolveInfo['operation'],\n Set<GraphQLResolveInfo['path']['key']>\n>\n\nconst selectRootPathsByContext = new WeakMap<Context, SelectRootPathsByOperation>()\n\nexport function buildSelectForCollection(info: GraphQLResolveInfo, context?: Context): SelectType {\n if (context) {\n registerSelectRootPath(context, info)\n }\n\n return buildSelect(info)\n}\nexport function buildSelectForCollectionMany(\n info: GraphQLResolveInfo,\n context?: Context,\n): SelectType {\n if (context) {\n registerSelectRootPath(context, info)\n }\n\n return buildSelect(info)?.docs as SelectType\n}\n\nexport function resolveSelect(\n info: GraphQLResolveInfo,\n select: SelectType,\n context?: Context,\n): SelectType {\n const isSelectEnabled = context ? hasSelectRootPath(context, info) : typeof select !== 'undefined'\n\n if (!isSelectEnabled) {\n return undefined\n }\n\n const field = info.parentType.getFields()[info.fieldName]?.extensions?.field as\n | JoinField\n | RelationshipField\n | undefined\n | UploadField\n const fieldSelect = buildSelect(info)\n\n if (field?.type === 'join') {\n return fieldSelect?.docs as SelectType\n }\n\n if (\n (field?.type === 'relationship' || field?.type === 'upload') &&\n Array.isArray(field.relationTo)\n ) {\n return fieldSelect?.value as SelectType\n }\n\n return fieldSelect\n}\n\nfunction buildSelect(info: GraphQLResolveInfo) {\n const returnType = getNamedType(info.returnType) as GraphQLObjectType\n\n if (!returnType) {\n return\n }\n\n return info.fieldNodes.reduce<SelectTree>((fieldTree, fieldNode) => {\n if (!fieldNode.selectionSet) {\n return fieldTree\n }\n\n return mergeSelectTrees(fieldTree, buildSelectTree(info, fieldNode.selectionSet, returnType))\n }, {})\n}\n\nfunction buildSelectTree(\n info: GraphQLResolveInfo,\n selectionSet: SelectionSetNode,\n type: GraphQLObjectType,\n): SelectTree {\n const fieldMap = type.getFields?.()\n let fieldTree: SelectTree = {}\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n const fieldName = selection.name.value\n const fieldSchema = fieldMap?.[fieldName]\n\n const field = fieldSchema?.extensions?.field as FieldBase\n const fieldNameOriginal = field?.name || fieldName\n\n if (fieldName === '__typename') {\n continue\n }\n if (fieldSchema == undefined) {\n continue\n }\n\n if (selection.selectionSet) {\n const type = getNamedType(fieldSchema.type) as GraphQLObjectType\n\n if (isObjectType(type) || isInterfaceType(type) || isUnionType(type)) {\n fieldTree = mergeSelectTrees(fieldTree, {\n [fieldNameOriginal]: buildSelectTree(info, selection.selectionSet, type),\n })\n continue\n }\n }\n\n fieldTree = mergeSelectTrees(fieldTree, { [fieldNameOriginal]: true })\n break\n }\n\n case Kind.FRAGMENT_SPREAD: {\n const fragmentName = selection.name.value\n const fragment = info.fragments[fragmentName]\n const fragmentType =\n fragment && (info.schema.getType(fragment.typeCondition.name.value) as GraphQLObjectType)\n\n if (fragmentType) {\n fieldTree = mergeSelectTrees(\n fieldTree,\n buildFragmentSelectTree(info, fragment.selectionSet, fragmentType, type),\n )\n }\n break\n }\n\n case Kind.INLINE_FRAGMENT: {\n const fragmentType = selection.typeCondition\n ? (info.schema.getType(selection.typeCondition.name.value) as GraphQLObjectType)\n : type\n\n if (fragmentType) {\n fieldTree = mergeSelectTrees(\n fieldTree,\n buildFragmentSelectTree(info, selection.selectionSet, fragmentType, type),\n )\n }\n break\n }\n }\n }\n\n return fieldTree\n}\n\nfunction buildFragmentSelectTree(\n info: GraphQLResolveInfo,\n selectionSet: SelectionSetNode,\n fragmentType: GraphQLObjectType,\n parentType: GraphQLObjectType,\n): SelectTree {\n const fragmentSelectTree = buildSelectTree(info, selectionSet, fragmentType)\n const blockSlug = fragmentType.extensions?.blockSlug as string | undefined\n\n if (blockSlug && isUnionType(parentType)) {\n return { [blockSlug]: fragmentSelectTree }\n }\n\n return fragmentSelectTree\n}\n\nfunction getRootPathKey(path: GraphQLResolveInfo['path']): GraphQLResolveInfo['path']['key'] {\n while (path.prev) {\n path = path.prev\n }\n\n return path.key\n}\n\nfunction hasSelectRootPath(context: Context, info: GraphQLResolveInfo): boolean {\n return Boolean(\n selectRootPathsByContext.get(context)?.get(info.operation)?.has(getRootPathKey(info.path)),\n )\n}\n\nfunction isSelectTree(value: unknown): value is SelectTree {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction mergeSelectTrees(firstTree: SelectTree, secondTree: SelectTree): SelectTree {\n const mergedTree = { ...firstTree }\n\n for (const [fieldName, fieldSelect] of Object.entries(secondTree)) {\n const existingFieldSelect = mergedTree[fieldName]\n\n mergedTree[fieldName] =\n isSelectTree(existingFieldSelect) && isSelectTree(fieldSelect)\n ? mergeSelectTrees(existingFieldSelect, fieldSelect)\n : fieldSelect\n }\n\n return mergedTree\n}\n\nfunction registerSelectRootPath(context: Context, info: GraphQLResolveInfo): void {\n let selectRootPathsByOperation = selectRootPathsByContext.get(context)\n\n if (!selectRootPathsByOperation) {\n selectRootPathsByOperation = new WeakMap()\n selectRootPathsByContext.set(context, selectRootPathsByOperation)\n }\n\n let selectRootPaths = selectRootPathsByOperation.get(info.operation)\n\n if (!selectRootPaths) {\n selectRootPaths = new Set()\n selectRootPathsByOperation.set(info.operation, selectRootPaths)\n }\n\n selectRootPaths.add(getRootPathKey(info.path))\n}\n\ntype SelectTree = SelectIncludeType\ntype SelectType = TypedCollectionSelect['any']\n"],"names":["getNamedType","isInterfaceType","isObjectType","isUnionType","Kind","selectRootPathsByContext","WeakMap","buildSelectForCollection","info","context","registerSelectRootPath","buildSelect","buildSelectForCollectionMany","docs","resolveSelect","select","isSelectEnabled","hasSelectRootPath","undefined","field","parentType","getFields","fieldName","extensions","fieldSelect","type","Array","isArray","relationTo","value","returnType","fieldNodes","reduce","fieldTree","fieldNode","selectionSet","mergeSelectTrees","buildSelectTree","fieldMap","selection","selections","kind","FIELD","name","fieldSchema","fieldNameOriginal","FRAGMENT_SPREAD","fragmentName","fragment","fragments","fragmentType","schema","getType","typeCondition","buildFragmentSelectTree","INLINE_FRAGMENT","fragmentSelectTree","blockSlug","getRootPathKey","path","prev","key","Boolean","get","operation","has","isSelectTree","firstTree","secondTree","mergedTree","Object","entries","existingFieldSelect","selectRootPathsByOperation","set","selectRootPaths","Set","add"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/graphql",
3
- "version": "4.0.0-internal.cc18726",
3
+ "version": "4.0.0-internal.cd47d20",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -53,11 +53,11 @@
53
53
  "@types/pluralize": "^0.0.33",
54
54
  "graphql-http": "1.22.4",
55
55
  "@payloadcms/eslint-config": "3.28.0",
56
- "payload": "4.0.0-internal.cc18726"
56
+ "payload": "4.0.0-internal.cd47d20"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "graphql": "^16.8.1",
60
- "payload": "4.0.0-internal.cc18726"
60
+ "payload": "4.0.0-internal.cd47d20"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "pnpm build:types && pnpm build:swc",
@@ -1,57 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { formatName } from './formatName';
3
- describe('formatName', ()=>{
4
- it.each`
5
- char | expected
6
- ${'á'} | ${'a'}
7
- ${'è'} | ${'e'}
8
- ${'í'} | ${'i'}
9
- ${'ó'} | ${'o'}
10
- ${'ú'} | ${'u'}
11
- ${'ñ'} | ${'n'}
12
- ${'ü'} | ${'u'}
13
- `('should convert accented character: $char', ({ char, expected })=>{
14
- expect(formatName(char)).toEqual(expected);
15
- });
16
- describe('UTC offset handling', ()=>{
17
- it.each`
18
- offset | expected
19
- ${'+00:00'} | ${'_TZOFFSET_PLUS_00_00'}
20
- ${'+05:30'} | ${'_TZOFFSET_PLUS_05_30'}
21
- ${'+05:45'} | ${'_TZOFFSET_PLUS_05_45'}
22
- ${'+08:00'} | ${'_TZOFFSET_PLUS_08_00'}
23
- ${'+12:00'} | ${'_TZOFFSET_PLUS_12_00'}
24
- ${'+14:00'} | ${'_TZOFFSET_PLUS_14_00'}
25
- ${'-00:00'} | ${'_TZOFFSET_MINUS_00_00'}
26
- ${'-03:30'} | ${'_TZOFFSET_MINUS_03_30'}
27
- ${'-05:00'} | ${'_TZOFFSET_MINUS_05_00'}
28
- ${'-08:00'} | ${'_TZOFFSET_MINUS_08_00'}
29
- ${'-12:00'} | ${'_TZOFFSET_MINUS_12_00'}
30
- `('should convert UTC offset $offset to $expected', ({ offset, expected })=>{
31
- expect(formatName(offset)).toEqual(expected);
32
- });
33
- it('should not collide between positive and negative offsets', ()=>{
34
- const plusFive = formatName('+05:00');
35
- const minusFive = formatName('-05:00');
36
- expect(plusFive).not.toEqual(minusFive);
37
- expect(plusFive).toEqual('_TZOFFSET_PLUS_05_00');
38
- expect(minusFive).toEqual('_TZOFFSET_MINUS_05_00');
39
- });
40
- it('should not treat IANA timezone names as offsets', ()=>{
41
- // These should use standard formatting, not UTC offset formatting
42
- expect(formatName('America/New_York')).toEqual('America_New_York');
43
- expect(formatName('Europe/London')).toEqual('Europe_London');
44
- expect(formatName('Asia/Tokyo')).toEqual('Asia_Tokyo');
45
- });
46
- it('should not treat partial offset patterns as offsets', ()=>{
47
- // These don't match the strict ±HH:mm pattern, so they use standard formatting
48
- expect(formatName('+5')).toEqual('_5');
49
- expect(formatName('+05')).toEqual('_05');
50
- expect(formatName('+0530')).toEqual('_0530');
51
- // 05:30 without sign is not a UTC offset, starts with number so gets _ prefix
52
- expect(formatName('05:30')).toEqual('_05:30');
53
- });
54
- });
55
- });
56
-
57
- //# sourceMappingURL=formatName.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/formatName.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { formatName } from './formatName'\n\ndescribe('formatName', () => {\n it.each`\n char | expected\n ${'á'} | ${'a'}\n ${'è'} | ${'e'}\n ${'í'} | ${'i'}\n ${'ó'} | ${'o'}\n ${'ú'} | ${'u'}\n ${'ñ'} | ${'n'}\n ${'ü'} | ${'u'}\n `('should convert accented character: $char', ({ char, expected }) => {\n expect(formatName(char)).toEqual(expected)\n })\n\n describe('UTC offset handling', () => {\n it.each`\n offset | expected\n ${'+00:00'} | ${'_TZOFFSET_PLUS_00_00'}\n ${'+05:30'} | ${'_TZOFFSET_PLUS_05_30'}\n ${'+05:45'} | ${'_TZOFFSET_PLUS_05_45'}\n ${'+08:00'} | ${'_TZOFFSET_PLUS_08_00'}\n ${'+12:00'} | ${'_TZOFFSET_PLUS_12_00'}\n ${'+14:00'} | ${'_TZOFFSET_PLUS_14_00'}\n ${'-00:00'} | ${'_TZOFFSET_MINUS_00_00'}\n ${'-03:30'} | ${'_TZOFFSET_MINUS_03_30'}\n ${'-05:00'} | ${'_TZOFFSET_MINUS_05_00'}\n ${'-08:00'} | ${'_TZOFFSET_MINUS_08_00'}\n ${'-12:00'} | ${'_TZOFFSET_MINUS_12_00'}\n `('should convert UTC offset $offset to $expected', ({ offset, expected }) => {\n expect(formatName(offset)).toEqual(expected)\n })\n\n it('should not collide between positive and negative offsets', () => {\n const plusFive = formatName('+05:00')\n const minusFive = formatName('-05:00')\n expect(plusFive).not.toEqual(minusFive)\n expect(plusFive).toEqual('_TZOFFSET_PLUS_05_00')\n expect(minusFive).toEqual('_TZOFFSET_MINUS_05_00')\n })\n\n it('should not treat IANA timezone names as offsets', () => {\n // These should use standard formatting, not UTC offset formatting\n expect(formatName('America/New_York')).toEqual('America_New_York')\n expect(formatName('Europe/London')).toEqual('Europe_London')\n expect(formatName('Asia/Tokyo')).toEqual('Asia_Tokyo')\n })\n\n it('should not treat partial offset patterns as offsets', () => {\n // These don't match the strict ±HH:mm pattern, so they use standard formatting\n expect(formatName('+5')).toEqual('_5')\n expect(formatName('+05')).toEqual('_05')\n expect(formatName('+0530')).toEqual('_0530')\n // 05:30 without sign is not a UTC offset, starts with number so gets _ prefix\n expect(formatName('05:30')).toEqual('_05:30')\n })\n })\n})\n"],"names":["describe","it","expect","formatName","each","char","expected","toEqual","offset","plusFive","minusFive","not"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAC7C,SAASC,UAAU,QAAQ,eAAc;AAEzCH,SAAS,cAAc;IACrBC,GAAGG,IAAI,CAAC;;IAEN,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;IACf,EAAE,IAAI,GAAG,EAAE,IAAI;EACjB,CAAC,CAAC,4CAA4C,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAE;QAC/DJ,OAAOC,WAAWE,OAAOE,OAAO,CAACD;IACnC;IAEAN,SAAS,uBAAuB;QAC9BC,GAAGG,IAAI,CAAC;;MAEN,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,uBAAuB;MACvC,EAAE,SAAS,GAAG,EAAE,wBAAwB;MACxC,EAAE,SAAS,GAAG,EAAE,wBAAwB;MACxC,EAAE,SAAS,GAAG,EAAE,wBAAwB;MACxC,EAAE,SAAS,GAAG,EAAE,wBAAwB;MACxC,EAAE,SAAS,GAAG,EAAE,wBAAwB;IAC1C,CAAC,CAAC,kDAAkD,CAAC,EAAEI,MAAM,EAAEF,QAAQ,EAAE;YACvEJ,OAAOC,WAAWK,SAASD,OAAO,CAACD;QACrC;QAEAL,GAAG,4DAA4D;YAC7D,MAAMQ,WAAWN,WAAW;YAC5B,MAAMO,YAAYP,WAAW;YAC7BD,OAAOO,UAAUE,GAAG,CAACJ,OAAO,CAACG;YAC7BR,OAAOO,UAAUF,OAAO,CAAC;YACzBL,OAAOQ,WAAWH,OAAO,CAAC;QAC5B;QAEAN,GAAG,mDAAmD;YACpD,kEAAkE;YAClEC,OAAOC,WAAW,qBAAqBI,OAAO,CAAC;YAC/CL,OAAOC,WAAW,kBAAkBI,OAAO,CAAC;YAC5CL,OAAOC,WAAW,eAAeI,OAAO,CAAC;QAC3C;QAEAN,GAAG,uDAAuD;YACxD,+EAA+E;YAC/EC,OAAOC,WAAW,OAAOI,OAAO,CAAC;YACjCL,OAAOC,WAAW,QAAQI,OAAO,CAAC;YAClCL,OAAOC,WAAW,UAAUI,OAAO,CAAC;YACpC,8EAA8E;YAC9EL,OAAOC,WAAW,UAAUI,OAAO,CAAC;QACtC;IACF;AACF"}
@@ -1,142 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { formatUtcOffset } from './formatUtcOffset.js';
3
- describe('formatUtcOffset', ()=>{
4
- describe('valid UTC offsets', ()=>{
5
- it.each([
6
- [
7
- '+00:00',
8
- '_TZOFFSET_PLUS_00_00'
9
- ],
10
- [
11
- '+05:30',
12
- '_TZOFFSET_PLUS_05_30'
13
- ],
14
- [
15
- '+05:45',
16
- '_TZOFFSET_PLUS_05_45'
17
- ],
18
- [
19
- '+08:00',
20
- '_TZOFFSET_PLUS_08_00'
21
- ],
22
- [
23
- '+09:30',
24
- '_TZOFFSET_PLUS_09_30'
25
- ],
26
- [
27
- '+12:00',
28
- '_TZOFFSET_PLUS_12_00'
29
- ],
30
- [
31
- '+14:00',
32
- '_TZOFFSET_PLUS_14_00'
33
- ]
34
- ])('should convert positive offset %s to %s', (offset, expected)=>{
35
- expect(formatUtcOffset(offset)).toEqual(expected);
36
- });
37
- it.each([
38
- [
39
- '-00:00',
40
- '_TZOFFSET_MINUS_00_00'
41
- ],
42
- [
43
- '-03:30',
44
- '_TZOFFSET_MINUS_03_30'
45
- ],
46
- [
47
- '-05:00',
48
- '_TZOFFSET_MINUS_05_00'
49
- ],
50
- [
51
- '-08:00',
52
- '_TZOFFSET_MINUS_08_00'
53
- ],
54
- [
55
- '-09:30',
56
- '_TZOFFSET_MINUS_09_30'
57
- ],
58
- [
59
- '-12:00',
60
- '_TZOFFSET_MINUS_12_00'
61
- ]
62
- ])('should convert negative offset %s to %s', (offset, expected)=>{
63
- expect(formatUtcOffset(offset)).toEqual(expected);
64
- });
65
- });
66
- describe('non-offset values', ()=>{
67
- it.each([
68
- 'UTC',
69
- 'America/New_York',
70
- 'Europe/London',
71
- 'Asia/Tokyo',
72
- 'Pacific/Auckland'
73
- ])('should return null for IANA timezone: %s', (timezone)=>{
74
- expect(formatUtcOffset(timezone)).toBeNull();
75
- });
76
- it.each([
77
- '+5',
78
- '-8',
79
- '+05',
80
- '-08',
81
- '+0530',
82
- '-0800',
83
- '05:30',
84
- '0530',
85
- 'invalid',
86
- ''
87
- ])('should return null for non-standard format: %s', (value)=>{
88
- expect(formatUtcOffset(value)).toBeNull();
89
- });
90
- });
91
- describe('uniqueness', ()=>{
92
- it('should produce unique names for positive and negative offsets', ()=>{
93
- const testCases = [
94
- [
95
- '+05:00',
96
- '-05:00'
97
- ],
98
- [
99
- '+08:00',
100
- '-08:00'
101
- ],
102
- [
103
- '+00:00',
104
- '-00:00'
105
- ],
106
- [
107
- '+12:00',
108
- '-12:00'
109
- ]
110
- ];
111
- for (const [positive, negative] of testCases){
112
- const positiveName = formatUtcOffset(positive);
113
- const negativeName = formatUtcOffset(negative);
114
- expect(positiveName).not.toEqual(negativeName);
115
- }
116
- });
117
- it('should produce unique names for different hour offsets', ()=>{
118
- const offsets = [
119
- '+05:00',
120
- '+06:00',
121
- '+07:00',
122
- '+08:00'
123
- ];
124
- const names = offsets.map(formatUtcOffset);
125
- const uniqueNames = new Set(names);
126
- expect(uniqueNames.size).toEqual(offsets.length);
127
- });
128
- it('should produce unique names for different minute offsets', ()=>{
129
- const offsets = [
130
- '+05:00',
131
- '+05:15',
132
- '+05:30',
133
- '+05:45'
134
- ];
135
- const names = offsets.map(formatUtcOffset);
136
- const uniqueNames = new Set(names);
137
- expect(uniqueNames.size).toEqual(offsets.length);
138
- });
139
- });
140
- });
141
-
142
- //# sourceMappingURL=formatUtcOffset.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/formatUtcOffset.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { formatUtcOffset } from './formatUtcOffset.js'\n\ndescribe('formatUtcOffset', () => {\n describe('valid UTC offsets', () => {\n it.each([\n ['+00:00', '_TZOFFSET_PLUS_00_00'],\n ['+05:30', '_TZOFFSET_PLUS_05_30'],\n ['+05:45', '_TZOFFSET_PLUS_05_45'],\n ['+08:00', '_TZOFFSET_PLUS_08_00'],\n ['+09:30', '_TZOFFSET_PLUS_09_30'],\n ['+12:00', '_TZOFFSET_PLUS_12_00'],\n ['+14:00', '_TZOFFSET_PLUS_14_00'],\n ])('should convert positive offset %s to %s', (offset, expected) => {\n expect(formatUtcOffset(offset)).toEqual(expected)\n })\n\n it.each([\n ['-00:00', '_TZOFFSET_MINUS_00_00'],\n ['-03:30', '_TZOFFSET_MINUS_03_30'],\n ['-05:00', '_TZOFFSET_MINUS_05_00'],\n ['-08:00', '_TZOFFSET_MINUS_08_00'],\n ['-09:30', '_TZOFFSET_MINUS_09_30'],\n ['-12:00', '_TZOFFSET_MINUS_12_00'],\n ])('should convert negative offset %s to %s', (offset, expected) => {\n expect(formatUtcOffset(offset)).toEqual(expected)\n })\n })\n\n describe('non-offset values', () => {\n it.each(['UTC', 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'Pacific/Auckland'])(\n 'should return null for IANA timezone: %s',\n (timezone) => {\n expect(formatUtcOffset(timezone)).toBeNull()\n },\n )\n\n it.each(['+5', '-8', '+05', '-08', '+0530', '-0800', '05:30', '0530', 'invalid', ''])(\n 'should return null for non-standard format: %s',\n (value) => {\n expect(formatUtcOffset(value)).toBeNull()\n },\n )\n })\n\n describe('uniqueness', () => {\n it('should produce unique names for positive and negative offsets', () => {\n const testCases = [\n ['+05:00', '-05:00'],\n ['+08:00', '-08:00'],\n ['+00:00', '-00:00'],\n ['+12:00', '-12:00'],\n ]\n\n for (const [positive, negative] of testCases) {\n const positiveName = formatUtcOffset(positive)\n const negativeName = formatUtcOffset(negative)\n expect(positiveName).not.toEqual(negativeName)\n }\n })\n\n it('should produce unique names for different hour offsets', () => {\n const offsets = ['+05:00', '+06:00', '+07:00', '+08:00']\n const names = offsets.map(formatUtcOffset)\n const uniqueNames = new Set(names)\n expect(uniqueNames.size).toEqual(offsets.length)\n })\n\n it('should produce unique names for different minute offsets', () => {\n const offsets = ['+05:00', '+05:15', '+05:30', '+05:45']\n const names = offsets.map(formatUtcOffset)\n const uniqueNames = new Set(names)\n expect(uniqueNames.size).toEqual(offsets.length)\n })\n })\n})\n"],"names":["describe","expect","it","formatUtcOffset","each","offset","expected","toEqual","timezone","toBeNull","value","testCases","positive","negative","positiveName","negativeName","not","offsets","names","map","uniqueNames","Set","size","length"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,eAAe,QAAQ,uBAAsB;AAEtDH,SAAS,mBAAmB;IAC1BA,SAAS,qBAAqB;QAC5BE,GAAGE,IAAI,CAAC;YACN;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;YAClC;gBAAC;gBAAU;aAAuB;SACnC,EAAE,2CAA2C,CAACC,QAAQC;YACrDL,OAAOE,gBAAgBE,SAASE,OAAO,CAACD;QAC1C;QAEAJ,GAAGE,IAAI,CAAC;YACN;gBAAC;gBAAU;aAAwB;YACnC;gBAAC;gBAAU;aAAwB;YACnC;gBAAC;gBAAU;aAAwB;YACnC;gBAAC;gBAAU;aAAwB;YACnC;gBAAC;gBAAU;aAAwB;YACnC;gBAAC;gBAAU;aAAwB;SACpC,EAAE,2CAA2C,CAACC,QAAQC;YACrDL,OAAOE,gBAAgBE,SAASE,OAAO,CAACD;QAC1C;IACF;IAEAN,SAAS,qBAAqB;QAC5BE,GAAGE,IAAI,CAAC;YAAC;YAAO;YAAoB;YAAiB;YAAc;SAAmB,EACpF,4CACA,CAACI;YACCP,OAAOE,gBAAgBK,WAAWC,QAAQ;QAC5C;QAGFP,GAAGE,IAAI,CAAC;YAAC;YAAM;YAAM;YAAO;YAAO;YAAS;YAAS;YAAS;YAAQ;YAAW;SAAG,EAClF,kDACA,CAACM;YACCT,OAAOE,gBAAgBO,QAAQD,QAAQ;QACzC;IAEJ;IAEAT,SAAS,cAAc;QACrBE,GAAG,iEAAiE;YAClE,MAAMS,YAAY;gBAChB;oBAAC;oBAAU;iBAAS;gBACpB;oBAAC;oBAAU;iBAAS;gBACpB;oBAAC;oBAAU;iBAAS;gBACpB;oBAAC;oBAAU;iBAAS;aACrB;YAED,KAAK,MAAM,CAACC,UAAUC,SAAS,IAAIF,UAAW;gBAC5C,MAAMG,eAAeX,gBAAgBS;gBACrC,MAAMG,eAAeZ,gBAAgBU;gBACrCZ,OAAOa,cAAcE,GAAG,CAACT,OAAO,CAACQ;YACnC;QACF;QAEAb,GAAG,0DAA0D;YAC3D,MAAMe,UAAU;gBAAC;gBAAU;gBAAU;gBAAU;aAAS;YACxD,MAAMC,QAAQD,QAAQE,GAAG,CAAChB;YAC1B,MAAMiB,cAAc,IAAIC,IAAIH;YAC5BjB,OAAOmB,YAAYE,IAAI,EAAEf,OAAO,CAACU,QAAQM,MAAM;QACjD;QAEArB,GAAG,4DAA4D;YAC7D,MAAMe,UAAU;gBAAC;gBAAU;gBAAU;gBAAU;aAAS;YACxD,MAAMC,QAAQD,QAAQE,GAAG,CAAChB;YAC1B,MAAMiB,cAAc,IAAIC,IAAIH;YAC5BjB,OAAOmB,YAAYE,IAAI,EAAEf,OAAO,CAACU,QAAQM,MAAM;QACjD;IACF;AACF"}