@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.
- package/bin.js +51 -2
- package/dist/bin/index.js +2 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/resolvers/auth/unlock.js +2 -1
- package/dist/resolvers/auth/unlock.js.map +1 -1
- package/dist/resolvers/collections/restoreVersion.d.ts +1 -0
- package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
- package/dist/resolvers/collections/restoreVersion.js +1 -0
- package/dist/resolvers/collections/restoreVersion.js.map +1 -1
- package/dist/resolvers/globals/restoreVersion.d.ts +1 -0
- package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
- package/dist/resolvers/globals/restoreVersion.js +1 -0
- package/dist/resolvers/globals/restoreVersion.js.map +1 -1
- package/dist/schema/buildMutationInputType.d.ts.map +1 -1
- package/dist/schema/buildMutationInputType.js +31 -3
- package/dist/schema/buildMutationInputType.js.map +1 -1
- package/dist/schema/buildObjectType.d.ts.map +1 -1
- package/dist/schema/buildObjectType.js +116 -22
- package/dist/schema/buildObjectType.js.map +1 -1
- package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
- package/dist/schema/fieldToWhereInputSchemaMap.js +27 -2
- package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -1
- package/dist/schema/initCollections.d.ts.map +1 -1
- package/dist/schema/initCollections.js +21 -16
- package/dist/schema/initCollections.js.map +1 -1
- package/dist/schema/initGlobals.d.ts.map +1 -1
- package/dist/schema/initGlobals.js +6 -0
- package/dist/schema/initGlobals.js.map +1 -1
- package/dist/schema/withOperators.js +5 -2
- package/dist/schema/withOperators.js.map +1 -1
- package/package.json +5 -4
package/bin.js
CHANGED
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
4
5
|
|
|
5
|
-
|
|
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,
|
|
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
|
|
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') {
|
package/dist/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport minimist from 'minimist'\nimport { findConfig,
|
|
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"}
|
package/dist/exports/types.d.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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"}
|
package/dist/exports/types.js
CHANGED
|
@@ -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
|
|
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
|
|
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"}
|
|
@@ -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;
|
|
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 +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,
|
|
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"}
|
|
@@ -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;
|
|
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 +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,
|
|
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"}
|
|
@@ -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;
|
|
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,
|
|
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:
|
|
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,
|
|
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
|
|
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
|
-
|
|
448
|
-
const
|
|
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
|
-
|
|
492
|
+
relationshipArgs.locale = {
|
|
451
493
|
type: graphqlResult.types.localeInputType
|
|
452
494
|
};
|
|
453
|
-
|
|
495
|
+
relationshipArgs.fallbackLocale = {
|
|
454
496
|
type: graphqlResult.types.fallbackLocaleInputType
|
|
455
497
|
};
|
|
456
498
|
}
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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]:
|
|
592
|
+
[field.name]: relationship
|
|
499
593
|
};
|
|
500
594
|
}
|
|
501
595
|
};
|