@payloadcms/graphql 3.0.0-canary.b750ebf → 3.0.0-canary.b8dd0db

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.
Files changed (35) hide show
  1. package/bin.js +51 -2
  2. package/dist/bin/index.js +2 -2
  3. package/dist/bin/index.js.map +1 -1
  4. package/dist/exports/types.d.ts +1 -1
  5. package/dist/exports/types.d.ts.map +1 -1
  6. package/dist/exports/types.js +1 -1
  7. package/dist/exports/types.js.map +1 -1
  8. package/dist/resolvers/auth/unlock.js +2 -1
  9. package/dist/resolvers/auth/unlock.js.map +1 -1
  10. package/dist/resolvers/collections/restoreVersion.d.ts +1 -0
  11. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
  12. package/dist/resolvers/collections/restoreVersion.js +1 -0
  13. package/dist/resolvers/collections/restoreVersion.js.map +1 -1
  14. package/dist/resolvers/globals/restoreVersion.d.ts +1 -0
  15. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
  16. package/dist/resolvers/globals/restoreVersion.js +1 -0
  17. package/dist/resolvers/globals/restoreVersion.js.map +1 -1
  18. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  19. package/dist/schema/buildMutationInputType.js +31 -3
  20. package/dist/schema/buildMutationInputType.js.map +1 -1
  21. package/dist/schema/buildObjectType.d.ts.map +1 -1
  22. package/dist/schema/buildObjectType.js +116 -22
  23. package/dist/schema/buildObjectType.js.map +1 -1
  24. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
  25. package/dist/schema/fieldToWhereInputSchemaMap.js +27 -2
  26. package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -1
  27. package/dist/schema/initCollections.d.ts.map +1 -1
  28. package/dist/schema/initCollections.js +21 -16
  29. package/dist/schema/initCollections.js.map +1 -1
  30. package/dist/schema/initGlobals.d.ts.map +1 -1
  31. package/dist/schema/initGlobals.js +6 -0
  32. package/dist/schema/initGlobals.js.map +1 -1
  33. package/dist/schema/withOperators.js +5 -2
  34. package/dist/schema/withOperators.js.map +1 -1
  35. package/package.json +5 -4
package/bin.js CHANGED
@@ -1,5 +1,54 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { bin } from './dist/bin/index.js'
3
+ import path from 'node:path'
4
+ import { fileURLToPath, pathToFileURL } from 'node:url'
4
5
 
5
- bin()
6
+ const useSwc = process.argv.includes('--use-swc')
7
+ const disableTranspile = process.argv.includes('--disable-transpile')
8
+
9
+ if (disableTranspile) {
10
+ // Remove --disable-transpile from arguments
11
+ process.argv = process.argv.filter((arg) => arg !== '--disable-transpile')
12
+
13
+ const start = async () => {
14
+ const { bin } = await import('./dist/bin/index.js')
15
+ await bin()
16
+ }
17
+
18
+ void start()
19
+ } else {
20
+ const filename = fileURLToPath(import.meta.url)
21
+ const dirname = path.dirname(filename)
22
+ const url = pathToFileURL(dirname).toString() + '/'
23
+
24
+ if (!useSwc) {
25
+ const start = async () => {
26
+ // Use tsx
27
+ let tsImport = (await import('tsx/esm/api')).tsImport
28
+
29
+ const { bin } = await tsImport('./dist/bin/index.js', url)
30
+ await bin()
31
+ }
32
+
33
+ void start()
34
+ } else if (useSwc) {
35
+ const { register } = await import('node:module')
36
+ // Remove --use-swc from arguments
37
+ process.argv = process.argv.filter((arg) => arg !== '--use-swc')
38
+
39
+ try {
40
+ register('@swc-node/register/esm', url)
41
+ } catch (_) {
42
+ console.error(
43
+ '@swc-node/register is not installed. Please install @swc-node/register in your project, if you want to use swc in payload run.',
44
+ )
45
+ }
46
+
47
+ const start = async () => {
48
+ const { bin } = await import('./dist/bin/index.js')
49
+ await bin()
50
+ }
51
+
52
+ void start()
53
+ }
54
+ }
package/dist/bin/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable no-console */ import minimist from 'minimist';
2
- import { findConfig, importConfig, loadEnv } from 'payload/node';
2
+ import { findConfig, loadEnv } from 'payload/node';
3
3
  import { generateSchema } from './generateSchema.js';
4
4
  export const bin = async ()=>{
5
5
  loadEnv();
6
6
  const configPath = findConfig();
7
- const config = await importConfig(configPath);
7
+ const config = await (await import(configPath)).default;
8
8
  const args = minimist(process.argv.slice(2));
9
9
  const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase();
10
10
  if (script === 'generate:schema') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport minimist from 'minimist'\nimport { findConfig, importConfig, loadEnv } from 'payload/node'\n\nimport { generateSchema } from './generateSchema.js'\n\nexport const bin = async () => {\n loadEnv()\n const configPath = findConfig()\n const config = await importConfig(configPath)\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (script === 'generate:schema') {\n return generateSchema(config)\n }\n\n console.log(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["minimist","findConfig","importConfig","loadEnv","generateSchema","bin","configPath","config","args","process","argv","slice","script","_","toLowerCase","console","log","exit"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,cAAc,WAAU;AAC/B,SAASC,UAAU,EAAEC,YAAY,EAAEC,OAAO,QAAQ,eAAc;AAEhE,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,MAAM;IACjBF;IACA,MAAMG,aAAaL;IACnB,MAAMM,SAAS,MAAML,aAAaI;IAElC,MAAME,OAAOR,SAASS,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOJ,KAAKK,CAAC,CAAC,EAAE,KAAK,WAAWL,KAAKK,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,IAAIF,WAAW,mBAAmB;QAChC,OAAOR,eAAeG;IACxB;IAEAQ,QAAQC,GAAG,CAAC,CAAC,iBAAiB,EAAEJ,OAAO,EAAE,CAAC;IAC1CH,QAAQQ,IAAI,CAAC;AACf,EAAC"}
1
+ {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport minimist from 'minimist'\nimport { findConfig, loadEnv } from 'payload/node'\n\nimport { generateSchema } from './generateSchema.js'\n\nexport const bin = async () => {\n loadEnv()\n const configPath = findConfig()\n const config = await (await import(configPath)).default\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (script === 'generate:schema') {\n return generateSchema(config)\n }\n\n console.log(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["minimist","findConfig","loadEnv","generateSchema","bin","configPath","config","default","args","process","argv","slice","script","_","toLowerCase","console","log","exit"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,cAAc,WAAU;AAC/B,SAASC,UAAU,EAAEC,OAAO,QAAQ,eAAc;AAElD,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,MAAMC,MAAM;IACjBF;IACA,MAAMG,aAAaJ;IACnB,MAAMK,SAAS,MAAM,AAAC,CAAA,MAAM,MAAM,CAACD,WAAU,EAAGE,OAAO;IAEvD,MAAMC,OAAOR,SAASS,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOJ,KAAKK,CAAC,CAAC,EAAE,KAAK,WAAWL,KAAKK,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,IAAIF,WAAW,mBAAmB;QAChC,OAAOT,eAAeG;IACxB;IAEAS,QAAQC,GAAG,CAAC,CAAC,iBAAiB,EAAEJ,OAAO,EAAE,CAAC;IAC1CH,QAAQQ,IAAI,CAAC;AACf,EAAC"}
@@ -1,4 +1,4 @@
1
1
  export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js';
2
2
  export { buildPaginatedListType } from '../schema/buildPaginatedListType.js';
3
- export { default as GraphQL } from 'graphql';
3
+ export * as GraphQL from 'graphql';
4
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js';
2
2
  export { buildPaginatedListType } from '../schema/buildPaginatedListType.js';
3
- export { default as GraphQL } from 'graphql';
3
+ export * as GraphQL from 'graphql';
4
4
 
5
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js'\nexport { buildPaginatedListType } from '../schema/buildPaginatedListType.js'\nexport { default as GraphQL } from 'graphql'\n"],"names":["GraphQLJSON","GraphQLJSONObject","buildPaginatedListType","default","GraphQL"],"mappings":"AAAA,SAASA,WAAW,EAAEC,iBAAiB,QAAQ,yCAAwC;AACvF,SAASC,sBAAsB,QAAQ,sCAAqC;AAC5E,SAASC,WAAWC,OAAO,QAAQ,UAAS"}
1
+ {"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js'\nexport { buildPaginatedListType } from '../schema/buildPaginatedListType.js'\nexport * as GraphQL from 'graphql'\n"],"names":["GraphQLJSON","GraphQLJSONObject","buildPaginatedListType","GraphQL"],"mappings":"AAAA,SAASA,WAAW,EAAEC,iBAAiB,QAAQ,yCAAwC;AACvF,SAASC,sBAAsB,QAAQ,sCAAqC;AAC5E,OAAO,KAAKC,OAAO,MAAM,UAAS"}
@@ -4,7 +4,8 @@ function unlockResolver(collection) {
4
4
  const options = {
5
5
  collection,
6
6
  data: {
7
- email: args.email
7
+ email: args.email,
8
+ username: args.username
8
9
  },
9
10
  req: isolateObjectProperty(context.req, 'transactionID')
10
11
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/auth/unlock.ts"],"sourcesContent":["import type { Collection } from 'payload'\n\nimport { isolateObjectProperty, unlockOperation } from 'payload'\n\nimport type { Context } from '../types.js'\n\nfunction unlockResolver(collection: Collection) {\n async function resolver(_, args, context: Context) {\n const options = {\n collection,\n data: { email: args.email },\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await unlockOperation(options)\n return result\n }\n\n return resolver\n}\n\nexport default unlockResolver\n"],"names":["isolateObjectProperty","unlockOperation","unlockResolver","collection","resolver","_","args","context","options","data","email","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,eAAe,QAAQ,UAAS;AAIhE,SAASC,eAAeC,UAAsB;IAC5C,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QAC/C,MAAMC,UAAU;YACdL;YACAM,MAAM;gBAAEC,OAAOJ,KAAKI,KAAK;YAAC;YAC1BC,KAAKX,sBAAsBO,QAAQI,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMX,gBAAgBO;QACrC,OAAOI;IACT;IAEA,OAAOR;AACT;AAEA,eAAeF,eAAc"}
1
+ {"version":3,"sources":["../../../src/resolvers/auth/unlock.ts"],"sourcesContent":["import type { Collection } from 'payload'\n\nimport { isolateObjectProperty, unlockOperation } from 'payload'\n\nimport type { Context } from '../types.js'\n\nfunction unlockResolver(collection: Collection) {\n async function resolver(_, args, context: Context) {\n const options = {\n collection,\n data: { email: args.email, username: args.username },\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await unlockOperation(options)\n return result\n }\n\n return resolver\n}\n\nexport default unlockResolver\n"],"names":["isolateObjectProperty","unlockOperation","unlockResolver","collection","resolver","_","args","context","options","data","email","username","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,eAAe,QAAQ,UAAS;AAIhE,SAASC,eAAeC,UAAsB;IAC5C,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QAC/C,MAAMC,UAAU;YACdL;YACAM,MAAM;gBAAEC,OAAOJ,KAAKI,KAAK;gBAAEC,UAAUL,KAAKK,QAAQ;YAAC;YACnDC,KAAKZ,sBAAsBO,QAAQK,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMZ,gBAAgBO;QACrC,OAAOK;IACT;IAEA,OAAOT;AACT;AAEA,eAAeF,eAAc"}
@@ -1,5 +1,6 @@
1
1
  import type { Collection, PayloadRequest } from 'payload';
2
2
  export type Resolver = (_: unknown, args: {
3
+ draft?: boolean;
3
4
  id: number | string;
4
5
  }, context: {
5
6
  req: PayloadRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/resolvers/collections/restoreVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAMzD,MAAM,MAAM,QAAQ,GAAG,CACrB,CAAC,EAAE,OAAO,EACV,IAAI,EAAE;IACJ,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,EACD,OAAO,EAAE;IACP,GAAG,EAAE,cAAc,CAAA;CACpB,KACE,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CAc/E"}
1
+ {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/resolvers/collections/restoreVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAMzD,MAAM,MAAM,QAAQ,GAAG,CACrB,CAAC,EAAE,OAAO,EACV,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,EACD,OAAO,EAAE;IACP,GAAG,EAAE,cAAc,CAAA;CACpB,KACE,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CAe/E"}
@@ -5,6 +5,7 @@ export default function restoreVersionResolver(collection) {
5
5
  id: args.id,
6
6
  collection,
7
7
  depth: 0,
8
+ draft: args.draft,
8
9
  req: isolateObjectProperty(context.req, 'transactionID')
9
10
  };
10
11
  const result = await restoreVersionOperation(options);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/collections/restoreVersion.ts"],"sourcesContent":["import type { Collection, PayloadRequest } from 'payload'\n\nimport { isolateObjectProperty, restoreVersionOperation } from 'payload'\n\nimport type { Context } from '../types.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n id: number | string\n },\n context: {\n req: PayloadRequest\n },\n) => Promise<Document>\n\nexport default function restoreVersionResolver(collection: Collection): Resolver {\n async function resolver(_, args, context: Context) {\n const options = {\n id: args.id,\n collection,\n depth: 0,\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await restoreVersionOperation(options)\n return result\n }\n\n return resolver\n}\n"],"names":["isolateObjectProperty","restoreVersionOperation","restoreVersionResolver","collection","resolver","_","args","context","options","id","depth","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,uBAAuB,QAAQ,UAAS;AAcxE,eAAe,SAASC,uBAAuBC,UAAsB;IACnE,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QAC/C,MAAMC,UAAU;YACdC,IAAIH,KAAKG,EAAE;YACXN;YACAO,OAAO;YACPC,KAAKX,sBAAsBO,QAAQI,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMX,wBAAwBO;QAC7C,OAAOI;IACT;IAEA,OAAOR;AACT"}
1
+ {"version":3,"sources":["../../../src/resolvers/collections/restoreVersion.ts"],"sourcesContent":["import type { Collection, PayloadRequest } from 'payload'\n\nimport { isolateObjectProperty, restoreVersionOperation } from 'payload'\n\nimport type { Context } from '../types.js'\n\nexport type Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n id: number | string\n },\n context: {\n req: PayloadRequest\n },\n) => Promise<Document>\n\nexport default function restoreVersionResolver(collection: Collection): Resolver {\n async function resolver(_, args, context: Context) {\n const options = {\n id: args.id,\n collection,\n depth: 0,\n draft: args.draft,\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await restoreVersionOperation(options)\n return result\n }\n\n return resolver\n}\n"],"names":["isolateObjectProperty","restoreVersionOperation","restoreVersionResolver","collection","resolver","_","args","context","options","id","depth","draft","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,uBAAuB,QAAQ,UAAS;AAexE,eAAe,SAASC,uBAAuBC,UAAsB;IACnE,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QAC/C,MAAMC,UAAU;YACdC,IAAIH,KAAKG,EAAE;YACXN;YACAO,OAAO;YACPC,OAAOL,KAAKK,KAAK;YACjBC,KAAKZ,sBAAsBO,QAAQK,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMZ,wBAAwBO;QAC7C,OAAOK;IACT;IAEA,OAAOT;AACT"}
@@ -1,5 +1,6 @@
1
1
  import type { Document, PayloadRequest, SanitizedGlobalConfig } from 'payload';
2
2
  type Resolver = (_: unknown, args: {
3
+ draft?: boolean;
3
4
  id: number | string;
4
5
  }, context: {
5
6
  req: PayloadRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/resolvers/globals/restoreVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAM9E,KAAK,QAAQ,GAAG,CACd,CAAC,EAAE,OAAO,EACV,IAAI,EAAE;IACJ,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,EACD,OAAO,EAAE;IACP,GAAG,EAAE,cAAc,CAAA;CACpB,KACE,OAAO,CAAC,QAAQ,CAAC,CAAA;AACtB,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,YAAY,EAAE,qBAAqB,GAAG,QAAQ,CAY5F"}
1
+ {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/resolvers/globals/restoreVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAM9E,KAAK,QAAQ,GAAG,CACd,CAAC,EAAE,OAAO,EACV,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,EACD,OAAO,EAAE;IACP,GAAG,EAAE,cAAc,CAAA;CACpB,KACE,OAAO,CAAC,QAAQ,CAAC,CAAA;AACtB,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,YAAY,EAAE,qBAAqB,GAAG,QAAQ,CAa5F"}
@@ -4,6 +4,7 @@ export default function restoreVersionResolver(globalConfig) {
4
4
  const options = {
5
5
  id: args.id,
6
6
  depth: 0,
7
+ draft: args.draft,
7
8
  globalConfig,
8
9
  req: isolateObjectProperty(context.req, 'transactionID')
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resolvers/globals/restoreVersion.ts"],"sourcesContent":["import type { Document, PayloadRequest, SanitizedGlobalConfig } from 'payload'\n\nimport { isolateObjectProperty, restoreVersionOperationGlobal } from 'payload'\n\nimport type { Context } from '../types.js'\n\ntype Resolver = (\n _: unknown,\n args: {\n id: number | string\n },\n context: {\n req: PayloadRequest\n },\n) => Promise<Document>\nexport default function restoreVersionResolver(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context: Context) {\n const options = {\n id: args.id,\n depth: 0,\n globalConfig,\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await restoreVersionOperationGlobal(options)\n return result\n }\n}\n"],"names":["isolateObjectProperty","restoreVersionOperationGlobal","restoreVersionResolver","globalConfig","resolver","_","args","context","options","id","depth","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,6BAA6B,QAAQ,UAAS;AAa9E,eAAe,SAASC,uBAAuBC,YAAmC;IAChF,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QACtD,MAAMC,UAAU;YACdC,IAAIH,KAAKG,EAAE;YACXC,OAAO;YACPP;YACAQ,KAAKX,sBAAsBO,QAAQI,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMX,8BAA8BO;QACnD,OAAOI;IACT;AACF"}
1
+ {"version":3,"sources":["../../../src/resolvers/globals/restoreVersion.ts"],"sourcesContent":["import type { Document, PayloadRequest, SanitizedGlobalConfig } from 'payload'\n\nimport { isolateObjectProperty, restoreVersionOperationGlobal } from 'payload'\n\nimport type { Context } from '../types.js'\n\ntype Resolver = (\n _: unknown,\n args: {\n draft?: boolean\n id: number | string\n },\n context: {\n req: PayloadRequest\n },\n) => Promise<Document>\nexport default function restoreVersionResolver(globalConfig: SanitizedGlobalConfig): Resolver {\n return async function resolver(_, args, context: Context) {\n const options = {\n id: args.id,\n depth: 0,\n draft: args.draft,\n globalConfig,\n req: isolateObjectProperty(context.req, 'transactionID'),\n }\n\n const result = await restoreVersionOperationGlobal(options)\n return result\n }\n}\n"],"names":["isolateObjectProperty","restoreVersionOperationGlobal","restoreVersionResolver","globalConfig","resolver","_","args","context","options","id","depth","draft","req","result"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,6BAA6B,QAAQ,UAAS;AAc9E,eAAe,SAASC,uBAAuBC,YAAmC;IAChF,OAAO,eAAeC,SAASC,CAAC,EAAEC,IAAI,EAAEC,OAAgB;QACtD,MAAMC,UAAU;YACdC,IAAIH,KAAKG,EAAE;YACXC,OAAO;YACPC,OAAOL,KAAKK,KAAK;YACjBR;YACAS,KAAKZ,sBAAsBO,QAAQK,GAAG,EAAE;QAC1C;QAEA,MAAMC,SAAS,MAAMZ,8BAA8BO;QACnD,OAAOK;IACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildMutationInputType.d.ts","sourceRoot":"","sources":["../../src/schema/buildMutationInputType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAe,MAAM,SAAS,CAAA;AACtF,OAAO,KAAK,EAQV,KAAK,EACL,WAAW,EASX,yBAAyB,EACzB,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAIL,sBAAsB,EAKvB,MAAM,SAAS,CAAA;AAUhB,QAAA,MAAM,YAAY;;;CAGjB,CAAA;AAED,eAAO,MAAM,mBAAmB,SACxB,MAAM,OAAO,YAAY,cACnB,yBAAyB,KACpC,iBAUF,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAAA;CACxC,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,aAAqB,EACrB,aAAa,EACb,UAAU,GACX,EAAE,0BAA0B,GAAG,sBAAsB,GAAG,IAAI,CAgQ5D"}
1
+ {"version":3,"file":"buildMutationInputType.d.ts","sourceRoot":"","sources":["../../src/schema/buildMutationInputType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAe,MAAM,SAAS,CAAA;AACtF,OAAO,KAAK,EAQV,KAAK,EACL,WAAW,EASX,yBAAyB,EACzB,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAIL,sBAAsB,EAKvB,MAAM,SAAS,CAAA;AAUhB,QAAA,MAAM,YAAY;;;CAGjB,CAAA;AAED,eAAO,MAAM,mBAAmB,SACxB,MAAM,OAAO,YAAY,cACnB,yBAAyB,KACpC,iBAUF,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAAA;CACxC,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,aAAqB,EACrB,aAAa,EACb,UAAU,GACX,EAAE,0BAA0B,GAAG,sBAAsB,GAAG,IAAI,CAyS5D"}
@@ -236,12 +236,40 @@ export function buildMutationInputType({ name, config, fields, forceNullable = f
236
236
  type: withNullableType(field, GraphQLString, forceNullable)
237
237
  }
238
238
  }),
239
- upload: (inputObjectTypeConfig, field)=>({
239
+ upload: (inputObjectTypeConfig, field)=>{
240
+ const { relationTo } = field;
241
+ let type;
242
+ if (Array.isArray(relationTo)) {
243
+ const fullName = `${combineParentName(parentName, toWords(field.name, true))}RelationshipInput`;
244
+ type = new GraphQLInputObjectType({
245
+ name: fullName,
246
+ fields: {
247
+ relationTo: {
248
+ type: new GraphQLEnumType({
249
+ name: `${fullName}RelationTo`,
250
+ values: relationTo.reduce((values, option)=>({
251
+ ...values,
252
+ [formatName(option)]: {
253
+ value: option
254
+ }
255
+ }), {})
256
+ })
257
+ },
258
+ value: {
259
+ type: GraphQLJSON
260
+ }
261
+ }
262
+ });
263
+ } else {
264
+ type = getCollectionIDType(config.db.defaultIDType, graphqlResult.collections[relationTo].config);
265
+ }
266
+ return {
240
267
  ...inputObjectTypeConfig,
241
268
  [field.name]: {
242
- type: withNullableType(field, GraphQLString, forceNullable)
269
+ type: field.hasMany ? new GraphQLList(type) : type
243
270
  }
244
- })
271
+ };
272
+ }
245
273
  };
246
274
  const fieldName = formatName(name);
247
275
  const fieldSchemas = fields.reduce((inputObjectTypeConfig, field)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GraphQLInfo,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextField,\n TextareaField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { flattenTopLevelFields, toWords } from 'payload'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/shared'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport combineParentName from '../utilities/combineParentName.js'\nimport formatName from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport withNullableType from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentName,\n}: BuildMutationInputTypeArgs): GraphQLInputObjectType | null {\n const fieldToSchemaMap = {\n array: (inputObjectTypeConfig: InputObjectTypeConfig, field: ArrayField) => {\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLList<GraphQLType> | GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n type = new GraphQLList(withNullableType(field, type, forceNullable))\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlockField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, new GraphQLList(GraphQLFloat), forceNullable) },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n relationship: (inputObjectTypeConfig: InputObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (inputObjectTypeConfig: InputObjectTypeConfig, field: TabsField) => {\n return field.tabs.reduce((acc, tab) => {\n if (tabHasName(tab)) {\n const fullName = combineParentName(parentName, toWords(tab.name, true))\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: tab.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return acc\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(subFieldSchema, subField)\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (inputObjectTypeConfig: InputObjectTypeConfig, field: UploadField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n }\n\n const fieldName = formatName(name)\n\n const fieldSchemas = fields.reduce((inputObjectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return inputObjectTypeConfig\n }\n\n const schema = fieldSchema(inputObjectTypeConfig, field)\n if (Object.keys(schema).length === 0) {\n return inputObjectTypeConfig\n }\n\n return {\n ...inputObjectTypeConfig,\n ...fieldSchema(inputObjectTypeConfig, field),\n }\n }, {})\n\n if (Object.keys(fieldSchemas).length === 0) {\n return null\n }\n\n return new GraphQLInputObjectType({\n name: `mutation${fieldName}Input`,\n fields: fieldSchemas,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInputObjectType","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLString","flattenTopLevelFields","toWords","fieldAffectsData","optionIsObject","tabHasName","GraphQLJSON","combineParentName","formatName","groupOrTabHasRequiredSubfield","withNullableType","idFieldTypes","number","text","getCollectionIDType","type","collection","idField","fields","find","field","name","buildMutationInputType","config","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","inputObjectTypeConfig","fullName","blocks","checkbox","code","collapsible","reduce","acc","subField","addSubField","date","email","group","requiresAtLeastOneField","json","hasMany","point","radio","relationship","relationTo","Array","isArray","values","option","value","db","defaultIDType","collections","richText","row","select","formattedName","options","tabs","tab","subFieldSchema","textarea","upload","fieldName","fieldSchemas","fieldSchema","schema","Object","keys","length"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GraphQLInfo,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextField,\n TextareaField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { flattenTopLevelFields, toWords } from 'payload'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/shared'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport combineParentName from '../utilities/combineParentName.js'\nimport formatName from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport withNullableType from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentName,\n}: BuildMutationInputTypeArgs): GraphQLInputObjectType | null {\n const fieldToSchemaMap = {\n array: (inputObjectTypeConfig: InputObjectTypeConfig, field: ArrayField) => {\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLList<GraphQLType> | GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n type = new GraphQLList(withNullableType(field, type, forceNullable))\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlockField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, new GraphQLList(GraphQLFloat), forceNullable) },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n relationship: (inputObjectTypeConfig: InputObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (inputObjectTypeConfig: InputObjectTypeConfig, field: TabsField) => {\n return field.tabs.reduce((acc, tab) => {\n if (tabHasName(tab)) {\n const fullName = combineParentName(parentName, toWords(tab.name, true))\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: tab.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return acc\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(subFieldSchema, subField)\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (inputObjectTypeConfig: InputObjectTypeConfig, field: UploadField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n }\n\n const fieldName = formatName(name)\n\n const fieldSchemas = fields.reduce((inputObjectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return inputObjectTypeConfig\n }\n\n const schema = fieldSchema(inputObjectTypeConfig, field)\n if (Object.keys(schema).length === 0) {\n return inputObjectTypeConfig\n }\n\n return {\n ...inputObjectTypeConfig,\n ...fieldSchema(inputObjectTypeConfig, field),\n }\n }, {})\n\n if (Object.keys(fieldSchemas).length === 0) {\n return null\n }\n\n return new GraphQLInputObjectType({\n name: `mutation${fieldName}Input`,\n fields: fieldSchemas,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInputObjectType","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLString","flattenTopLevelFields","toWords","fieldAffectsData","optionIsObject","tabHasName","GraphQLJSON","combineParentName","formatName","groupOrTabHasRequiredSubfield","withNullableType","idFieldTypes","number","text","getCollectionIDType","type","collection","idField","fields","find","field","name","buildMutationInputType","config","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","inputObjectTypeConfig","fullName","blocks","checkbox","code","collapsible","reduce","acc","subField","addSubField","date","email","group","requiresAtLeastOneField","json","hasMany","point","radio","relationship","relationTo","Array","isArray","values","option","value","db","defaultIDType","collections","richText","row","select","formattedName","options","tabs","tab","subFieldSchema","textarea","upload","fieldName","fieldSchemas","fieldSchema","schema","Object","keys","length"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../src/schema/buildObjectType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAQV,KAAK,EACL,WAAW,EAUX,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AA2BhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CAgmB1B"}
1
+ {"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../src/schema/buildObjectType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAQV,KAAK,EACL,WAAW,EAUX,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AA2BhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CAutB1B"}
@@ -6,7 +6,6 @@ import { GraphQLJSON } from '../packages/graphql-type-json/index.js';
6
6
  import combineParentName from '../utilities/combineParentName.js';
7
7
  import formatName from '../utilities/formatName.js';
8
8
  import formatOptions from '../utilities/formatOptions.js';
9
- import buildWhereInputType from './buildWhereInputType.js';
10
9
  import isFieldNullable from './isFieldNullable.js';
11
10
  import withNullableType from './withNullableType.js';
12
11
  export function buildObjectType({ name, baseFields = {}, config, fields, forceNullable, graphqlResult, parentName }) {
@@ -439,34 +438,125 @@ export function buildObjectType({ name, baseFields = {}, config, fields, forceNu
439
438
  }),
440
439
  upload: (objectTypeConfig, field)=>{
441
440
  const { relationTo } = field;
442
- const uploadName = combineParentName(parentName, toWords(field.name, true));
441
+ const isRelatedToManyCollections = Array.isArray(relationTo);
442
+ const hasManyValues = field.hasMany;
443
+ const relationshipName = combineParentName(parentName, toWords(field.name, true));
444
+ let type;
445
+ let relationToType = null;
446
+ if (Array.isArray(relationTo)) {
447
+ relationToType = new GraphQLEnumType({
448
+ name: `${relationshipName}_RelationTo`,
449
+ values: relationTo.reduce((relations, relation)=>({
450
+ ...relations,
451
+ [formatName(relation)]: {
452
+ value: relation
453
+ }
454
+ }), {})
455
+ });
456
+ const types = relationTo.map((relation)=>graphqlResult.collections[relation].graphQL.type);
457
+ type = new GraphQLObjectType({
458
+ name: `${relationshipName}_Relationship`,
459
+ fields: {
460
+ relationTo: {
461
+ type: relationToType
462
+ },
463
+ value: {
464
+ type: new GraphQLUnionType({
465
+ name: relationshipName,
466
+ resolveType (data, { req }) {
467
+ return graphqlResult.collections[data.collection].graphQL.type.name;
468
+ },
469
+ types
470
+ })
471
+ }
472
+ }
473
+ });
474
+ } else {
475
+ ({ type } = graphqlResult.collections[relationTo].graphQL);
476
+ }
443
477
  // If the relationshipType is undefined at this point,
444
478
  // it can be assumed that this blockType can have a relationship
445
479
  // to itself. Therefore, we set the relationshipType equal to the blockType
446
480
  // that is currently being created.
447
- const type = withNullableType(field, graphqlResult.collections[relationTo].graphQL.type || newlyCreatedBlockType, forceNullable);
448
- const uploadArgs = {};
481
+ type = type || newlyCreatedBlockType;
482
+ const relationshipArgs = {};
483
+ const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [
484
+ relationTo
485
+ ]).some((relation)=>graphqlResult.collections[relation].config.versions?.drafts);
486
+ if (relationsUseDrafts) {
487
+ relationshipArgs.draft = {
488
+ type: GraphQLBoolean
489
+ };
490
+ }
449
491
  if (config.localization) {
450
- uploadArgs.locale = {
492
+ relationshipArgs.locale = {
451
493
  type: graphqlResult.types.localeInputType
452
494
  };
453
- uploadArgs.fallbackLocale = {
495
+ relationshipArgs.fallbackLocale = {
454
496
  type: graphqlResult.types.fallbackLocaleInputType
455
497
  };
456
498
  }
457
- const relatedCollectionSlug = field.relationTo;
458
- const upload = {
459
- type,
460
- args: uploadArgs,
499
+ const relationship = {
500
+ type: withNullableType(field, hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type, forceNullable),
501
+ args: relationshipArgs,
461
502
  extensions: {
462
- complexity: 20
503
+ complexity: 10
463
504
  },
464
505
  async resolve (parent, args, context) {
465
506
  const value = parent[field.name];
466
507
  const locale = args.locale || context.req.locale;
467
508
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
468
- const id = value;
509
+ let relatedCollectionSlug = field.relationTo;
469
510
  const draft = Boolean(args.draft ?? context.req.query?.draft);
511
+ if (hasManyValues) {
512
+ const results = [];
513
+ const resultPromises = [];
514
+ const createPopulationPromise = async (relatedDoc, i)=>{
515
+ let id = relatedDoc;
516
+ let collectionSlug = field.relationTo;
517
+ if (isRelatedToManyCollections) {
518
+ collectionSlug = relatedDoc.relationTo;
519
+ id = relatedDoc.value;
520
+ }
521
+ const result = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
522
+ collectionSlug: collectionSlug,
523
+ currentDepth: 0,
524
+ depth: 0,
525
+ docID: id,
526
+ draft,
527
+ fallbackLocale,
528
+ locale,
529
+ overrideAccess: false,
530
+ showHiddenFields: false,
531
+ transactionID: context.req.transactionID
532
+ }));
533
+ if (result) {
534
+ if (isRelatedToManyCollections) {
535
+ results[i] = {
536
+ relationTo: collectionSlug,
537
+ value: {
538
+ ...result,
539
+ collection: collectionSlug
540
+ }
541
+ };
542
+ } else {
543
+ results[i] = result;
544
+ }
545
+ }
546
+ };
547
+ if (value) {
548
+ value.forEach((relatedDoc, i)=>{
549
+ resultPromises.push(createPopulationPromise(relatedDoc, i));
550
+ });
551
+ }
552
+ await Promise.all(resultPromises);
553
+ return results;
554
+ }
555
+ let id = value;
556
+ if (isRelatedToManyCollections && value) {
557
+ id = value.value;
558
+ relatedCollectionSlug = value.relationTo;
559
+ }
470
560
  if (id) {
471
561
  const relatedDocument = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
472
562
  collectionSlug: relatedCollectionSlug,
@@ -480,22 +570,26 @@ export function buildObjectType({ name, baseFields = {}, config, fields, forceNu
480
570
  showHiddenFields: false,
481
571
  transactionID: context.req.transactionID
482
572
  }));
483
- return relatedDocument || null;
573
+ if (relatedDocument) {
574
+ if (isRelatedToManyCollections) {
575
+ return {
576
+ relationTo: relatedCollectionSlug,
577
+ value: {
578
+ ...relatedDocument,
579
+ collection: relatedCollectionSlug
580
+ }
581
+ };
582
+ }
583
+ return relatedDocument;
584
+ }
585
+ return null;
484
586
  }
485
587
  return null;
486
588
  }
487
589
  };
488
- const whereFields = graphqlResult.collections[relationTo].config.fields;
489
- upload.args.where = {
490
- type: buildWhereInputType({
491
- name: uploadName,
492
- fields: whereFields,
493
- parentName: uploadName
494
- })
495
- };
496
590
  return {
497
591
  ...objectTypeConfig,
498
- [field.name]: upload
592
+ [field.name]: relationship
499
593
  };
500
594
  }
501
595
  };