@payloadcms/graphql 3.0.0-beta.11 → 3.0.0-beta.111

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 (252) hide show
  1. package/bin.js +54 -0
  2. package/dist/bin/generateSchema.d.ts +3 -0
  3. package/dist/bin/generateSchema.d.ts.map +1 -0
  4. package/dist/bin/generateSchema.js +10 -0
  5. package/dist/bin/generateSchema.js.map +1 -0
  6. package/dist/bin/index.d.ts +2 -0
  7. package/dist/bin/index.d.ts.map +1 -0
  8. package/dist/bin/index.js +17 -0
  9. package/dist/bin/index.js.map +1 -0
  10. package/dist/exports/types.d.ts +4 -0
  11. package/dist/exports/types.d.ts.map +1 -0
  12. package/dist/exports/types.js +5 -0
  13. package/dist/exports/types.js.map +1 -0
  14. package/dist/exports/utilities.d.ts +3 -0
  15. package/dist/exports/utilities.d.ts.map +1 -0
  16. package/dist/exports/utilities.js +4 -0
  17. package/dist/exports/utilities.js.map +1 -0
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +11 -11
  21. package/dist/index.js.map +1 -1
  22. package/dist/packages/graphql-query-complexity/QueryComplexity.d.ts +51 -0
  23. package/dist/packages/graphql-query-complexity/QueryComplexity.d.ts.map +1 -0
  24. package/dist/packages/graphql-query-complexity/QueryComplexity.js +270 -0
  25. package/dist/packages/graphql-query-complexity/QueryComplexity.js.map +1 -0
  26. package/dist/packages/graphql-query-complexity/createComplexityRule.d.ts +5 -0
  27. package/dist/packages/graphql-query-complexity/createComplexityRule.d.ts.map +1 -0
  28. package/dist/packages/graphql-query-complexity/createComplexityRule.js +8 -0
  29. package/dist/packages/graphql-query-complexity/createComplexityRule.js.map +1 -0
  30. package/dist/packages/graphql-query-complexity/estimators/fieldExtensions/index.d.ts +3 -0
  31. package/dist/packages/graphql-query-complexity/estimators/fieldExtensions/index.d.ts.map +1 -0
  32. package/dist/packages/graphql-query-complexity/estimators/fieldExtensions/index.js +14 -0
  33. package/dist/packages/graphql-query-complexity/estimators/fieldExtensions/index.js.map +1 -0
  34. package/dist/packages/graphql-query-complexity/estimators/simple/index.d.ts +5 -0
  35. package/dist/packages/graphql-query-complexity/estimators/simple/index.d.ts.map +1 -0
  36. package/dist/packages/graphql-query-complexity/estimators/simple/index.js +8 -0
  37. package/dist/packages/graphql-query-complexity/estimators/simple/index.js.map +1 -0
  38. package/dist/packages/graphql-query-complexity/index.d.ts +4 -0
  39. package/dist/packages/graphql-query-complexity/index.d.ts.map +1 -0
  40. package/dist/packages/graphql-query-complexity/index.js +5 -0
  41. package/dist/packages/graphql-query-complexity/index.js.map +1 -0
  42. package/dist/packages/graphql-type-json/index.d.ts +4 -0
  43. package/dist/packages/graphql-type-json/index.d.ts.map +1 -0
  44. package/dist/packages/graphql-type-json/index.js +63 -0
  45. package/dist/packages/graphql-type-json/index.js.map +1 -0
  46. package/dist/resolvers/auth/access.d.ts +2 -3
  47. package/dist/resolvers/auth/access.d.ts.map +1 -1
  48. package/dist/resolvers/auth/access.js +3 -5
  49. package/dist/resolvers/auth/access.js.map +1 -1
  50. package/dist/resolvers/auth/forgotPassword.d.ts +2 -3
  51. package/dist/resolvers/auth/forgotPassword.d.ts.map +1 -1
  52. package/dist/resolvers/auth/forgotPassword.js +4 -5
  53. package/dist/resolvers/auth/forgotPassword.js.map +1 -1
  54. package/dist/resolvers/auth/init.d.ts +1 -2
  55. package/dist/resolvers/auth/init.d.ts.map +1 -1
  56. package/dist/resolvers/auth/init.js +2 -4
  57. package/dist/resolvers/auth/init.js.map +1 -1
  58. package/dist/resolvers/auth/login.d.ts +2 -3
  59. package/dist/resolvers/auth/login.d.ts.map +1 -1
  60. package/dist/resolvers/auth/login.js +4 -6
  61. package/dist/resolvers/auth/login.js.map +1 -1
  62. package/dist/resolvers/auth/logout.d.ts +2 -3
  63. package/dist/resolvers/auth/logout.d.ts.map +1 -1
  64. package/dist/resolvers/auth/logout.js +2 -5
  65. package/dist/resolvers/auth/logout.js.map +1 -1
  66. package/dist/resolvers/auth/me.d.ts +2 -3
  67. package/dist/resolvers/auth/me.d.ts.map +1 -1
  68. package/dist/resolvers/auth/me.js +4 -4
  69. package/dist/resolvers/auth/me.js.map +1 -1
  70. package/dist/resolvers/auth/refresh.d.ts +2 -3
  71. package/dist/resolvers/auth/refresh.d.ts.map +1 -1
  72. package/dist/resolvers/auth/refresh.js +4 -13
  73. package/dist/resolvers/auth/refresh.js.map +1 -1
  74. package/dist/resolvers/auth/resetPassword.d.ts +2 -3
  75. package/dist/resolvers/auth/resetPassword.d.ts.map +1 -1
  76. package/dist/resolvers/auth/resetPassword.js +8 -7
  77. package/dist/resolvers/auth/resetPassword.js.map +1 -1
  78. package/dist/resolvers/auth/unlock.d.ts +2 -3
  79. package/dist/resolvers/auth/unlock.d.ts.map +1 -1
  80. package/dist/resolvers/auth/unlock.js +4 -5
  81. package/dist/resolvers/auth/unlock.js.map +1 -1
  82. package/dist/resolvers/auth/verifyEmail.d.ts +2 -3
  83. package/dist/resolvers/auth/verifyEmail.d.ts.map +1 -1
  84. package/dist/resolvers/auth/verifyEmail.js +8 -6
  85. package/dist/resolvers/auth/verifyEmail.js.map +1 -1
  86. package/dist/resolvers/collections/count.d.ts +12 -0
  87. package/dist/resolvers/collections/count.d.ts.map +1 -0
  88. package/dist/resolvers/collections/count.js +22 -0
  89. package/dist/resolvers/collections/count.js.map +1 -0
  90. package/dist/resolvers/collections/create.d.ts +5 -8
  91. package/dist/resolvers/collections/create.d.ts.map +1 -1
  92. package/dist/resolvers/collections/create.js +2 -3
  93. package/dist/resolvers/collections/create.js.map +1 -1
  94. package/dist/resolvers/collections/delete.d.ts +6 -6
  95. package/dist/resolvers/collections/delete.d.ts.map +1 -1
  96. package/dist/resolvers/collections/delete.js +12 -6
  97. package/dist/resolvers/collections/delete.js.map +1 -1
  98. package/dist/resolvers/collections/docAccess.d.ts +1 -2
  99. package/dist/resolvers/collections/docAccess.d.ts.map +1 -1
  100. package/dist/resolvers/collections/docAccess.js +1 -2
  101. package/dist/resolvers/collections/docAccess.js.map +1 -1
  102. package/dist/resolvers/collections/duplicate.d.ts +4 -6
  103. package/dist/resolvers/collections/duplicate.d.ts.map +1 -1
  104. package/dist/resolvers/collections/duplicate.js +3 -3
  105. package/dist/resolvers/collections/duplicate.js.map +1 -1
  106. package/dist/resolvers/collections/find.d.ts +2 -4
  107. package/dist/resolvers/collections/find.d.ts.map +1 -1
  108. package/dist/resolvers/collections/find.js +16 -6
  109. package/dist/resolvers/collections/find.js.map +1 -1
  110. package/dist/resolvers/collections/findByID.d.ts +4 -6
  111. package/dist/resolvers/collections/findByID.d.ts.map +1 -1
  112. package/dist/resolvers/collections/findByID.js +10 -3
  113. package/dist/resolvers/collections/findByID.js.map +1 -1
  114. package/dist/resolvers/collections/findVersionByID.d.ts +2 -5
  115. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -1
  116. package/dist/resolvers/collections/findVersionByID.js +3 -4
  117. package/dist/resolvers/collections/findVersionByID.js.map +1 -1
  118. package/dist/resolvers/collections/findVersions.d.ts +3 -4
  119. package/dist/resolvers/collections/findVersions.d.ts.map +1 -1
  120. package/dist/resolvers/collections/findVersions.js +12 -6
  121. package/dist/resolvers/collections/findVersions.js.map +1 -1
  122. package/dist/resolvers/collections/restoreVersion.d.ts +3 -3
  123. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
  124. package/dist/resolvers/collections/restoreVersion.js +3 -3
  125. package/dist/resolvers/collections/restoreVersion.js.map +1 -1
  126. package/dist/resolvers/collections/update.d.ts +6 -7
  127. package/dist/resolvers/collections/update.d.ts.map +1 -1
  128. package/dist/resolvers/collections/update.js +12 -6
  129. package/dist/resolvers/collections/update.js.map +1 -1
  130. package/dist/resolvers/globals/docAccess.d.ts +1 -2
  131. package/dist/resolvers/globals/docAccess.d.ts.map +1 -1
  132. package/dist/resolvers/globals/docAccess.js +1 -2
  133. package/dist/resolvers/globals/docAccess.js.map +1 -1
  134. package/dist/resolvers/globals/findOne.d.ts +2 -2
  135. package/dist/resolvers/globals/findOne.d.ts.map +1 -1
  136. package/dist/resolvers/globals/findOne.js +8 -5
  137. package/dist/resolvers/globals/findOne.js.map +1 -1
  138. package/dist/resolvers/globals/findVersionByID.d.ts +2 -2
  139. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -1
  140. package/dist/resolvers/globals/findVersionByID.js +8 -5
  141. package/dist/resolvers/globals/findVersionByID.js.map +1 -1
  142. package/dist/resolvers/globals/findVersions.d.ts +2 -2
  143. package/dist/resolvers/globals/findVersions.d.ts.map +1 -1
  144. package/dist/resolvers/globals/findVersions.js +2 -3
  145. package/dist/resolvers/globals/findVersions.js.map +1 -1
  146. package/dist/resolvers/globals/index.d.ts +5 -5
  147. package/dist/resolvers/globals/index.d.ts.map +1 -1
  148. package/dist/resolvers/globals/index.js +5 -5
  149. package/dist/resolvers/globals/index.js.map +1 -1
  150. package/dist/resolvers/globals/restoreVersion.d.ts +3 -2
  151. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
  152. package/dist/resolvers/globals/restoreVersion.js +3 -3
  153. package/dist/resolvers/globals/restoreVersion.js.map +1 -1
  154. package/dist/resolvers/globals/update.d.ts +5 -6
  155. package/dist/resolvers/globals/update.d.ts.map +1 -1
  156. package/dist/resolvers/globals/update.js +8 -5
  157. package/dist/resolvers/globals/update.js.map +1 -1
  158. package/dist/resolvers/types.d.ts +1 -1
  159. package/dist/resolvers/types.d.ts.map +1 -1
  160. package/dist/resolvers/types.js.map +1 -1
  161. package/dist/schema/buildFallbackLocaleInputType.d.ts +2 -3
  162. package/dist/schema/buildFallbackLocaleInputType.d.ts.map +1 -1
  163. package/dist/schema/buildFallbackLocaleInputType.js +2 -3
  164. package/dist/schema/buildFallbackLocaleInputType.js.map +1 -1
  165. package/dist/schema/buildLocaleInputType.d.ts +2 -3
  166. package/dist/schema/buildLocaleInputType.d.ts.map +1 -1
  167. package/dist/schema/buildLocaleInputType.js +2 -3
  168. package/dist/schema/buildLocaleInputType.js.map +1 -1
  169. package/dist/schema/buildMutationInputType.d.ts +1 -2
  170. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  171. package/dist/schema/buildMutationInputType.js +62 -19
  172. package/dist/schema/buildMutationInputType.js.map +1 -1
  173. package/dist/schema/buildObjectType.d.ts +3 -4
  174. package/dist/schema/buildObjectType.d.ts.map +1 -1
  175. package/dist/schema/buildObjectType.js +303 -102
  176. package/dist/schema/buildObjectType.js.map +1 -1
  177. package/dist/schema/buildPaginatedListType.d.ts +1 -2
  178. package/dist/schema/buildPaginatedListType.d.ts.map +1 -1
  179. package/dist/schema/buildPaginatedListType.js +1 -2
  180. package/dist/schema/buildPaginatedListType.js.map +1 -1
  181. package/dist/schema/buildPoliciesType.d.ts +2 -2
  182. package/dist/schema/buildPoliciesType.d.ts.map +1 -1
  183. package/dist/schema/buildPoliciesType.js +7 -5
  184. package/dist/schema/buildPoliciesType.js.map +1 -1
  185. package/dist/schema/buildWhereInputType.d.ts +3 -3
  186. package/dist/schema/buildWhereInputType.d.ts.map +1 -1
  187. package/dist/schema/buildWhereInputType.js +6 -7
  188. package/dist/schema/buildWhereInputType.js.map +1 -1
  189. package/dist/schema/fieldToWhereInputSchemaMap.d.ts +2 -2
  190. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
  191. package/dist/schema/fieldToWhereInputSchemaMap.js +32 -9
  192. package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -1
  193. package/dist/schema/initCollections.d.ts +3 -4
  194. package/dist/schema/initCollections.d.ts.map +1 -1
  195. package/dist/schema/initCollections.js +83 -49
  196. package/dist/schema/initCollections.js.map +1 -1
  197. package/dist/schema/initGlobals.d.ts +3 -4
  198. package/dist/schema/initGlobals.d.ts.map +1 -1
  199. package/dist/schema/initGlobals.js +27 -21
  200. package/dist/schema/initGlobals.js.map +1 -1
  201. package/dist/schema/isFieldNullable.d.ts +2 -3
  202. package/dist/schema/isFieldNullable.d.ts.map +1 -1
  203. package/dist/schema/isFieldNullable.js +2 -3
  204. package/dist/schema/isFieldNullable.js.map +1 -1
  205. package/dist/schema/operators.d.ts +1 -2
  206. package/dist/schema/operators.d.ts.map +1 -1
  207. package/dist/schema/operators.js +1 -2
  208. package/dist/schema/operators.js.map +1 -1
  209. package/dist/schema/recursivelyBuildNestedPaths.d.ts +3 -3
  210. package/dist/schema/recursivelyBuildNestedPaths.d.ts.map +1 -1
  211. package/dist/schema/recursivelyBuildNestedPaths.js +3 -4
  212. package/dist/schema/recursivelyBuildNestedPaths.js.map +1 -1
  213. package/dist/schema/withNullableType.d.ts +2 -3
  214. package/dist/schema/withNullableType.d.ts.map +1 -1
  215. package/dist/schema/withNullableType.js +1 -2
  216. package/dist/schema/withNullableType.js.map +1 -1
  217. package/dist/schema/withOperators.d.ts +1 -1
  218. package/dist/schema/withOperators.d.ts.map +1 -1
  219. package/dist/schema/withOperators.js +13 -8
  220. package/dist/schema/withOperators.js.map +1 -1
  221. package/dist/utilities/combineParentName.d.ts +1 -2
  222. package/dist/utilities/combineParentName.d.ts.map +1 -1
  223. package/dist/utilities/combineParentName.js +2 -3
  224. package/dist/utilities/combineParentName.js.map +1 -1
  225. package/dist/utilities/formatName.d.ts +1 -2
  226. package/dist/utilities/formatName.d.ts.map +1 -1
  227. package/dist/utilities/formatName.js +1 -2
  228. package/dist/utilities/formatName.js.map +1 -1
  229. package/dist/utilities/formatName.spec.js +1 -1
  230. package/dist/utilities/formatName.spec.js.map +1 -1
  231. package/dist/utilities/formatOptions.d.ts +2 -3
  232. package/dist/utilities/formatOptions.d.ts.map +1 -1
  233. package/dist/utilities/formatOptions.js +2 -3
  234. package/dist/utilities/formatOptions.js.map +1 -1
  235. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts +1 -1
  236. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts.map +1 -1
  237. package/dist/utilities/groupOrTabHasRequiredSubfield.js +1 -1
  238. package/dist/utilities/groupOrTabHasRequiredSubfield.js.map +1 -1
  239. package/dist/utilities/wrapCustomResolver.d.ts +1 -1
  240. package/dist/utilities/wrapCustomResolver.d.ts.map +1 -1
  241. package/dist/utilities/wrapCustomResolver.js +1 -1
  242. package/dist/utilities/wrapCustomResolver.js.map +1 -1
  243. package/package.json +37 -24
  244. package/dist/utilities/getCheckIfLocaleObject.d.ts +0 -5
  245. package/dist/utilities/getCheckIfLocaleObject.d.ts.map +0 -1
  246. package/dist/utilities/getCheckIfLocaleObject.js +0 -3
  247. package/dist/utilities/getCheckIfLocaleObject.js.map +0 -1
  248. package/dist/utilities/uppercase.d.ts +0 -3
  249. package/dist/utilities/uppercase.d.ts.map +0 -1
  250. package/dist/utilities/uppercase.js +0 -11
  251. package/dist/utilities/uppercase.js.map +0 -1
  252. package/src/index.ts +0 -126
package/bin.js ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+
3
+ import path from 'node:path'
4
+ import { fileURLToPath, pathToFileURL } from 'node:url'
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
+ }
@@ -0,0 +1,3 @@
1
+ import type { SanitizedConfig } from 'payload';
2
+ export declare function generateSchema(config: SanitizedConfig): void;
3
+ //# sourceMappingURL=generateSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSchema.d.ts","sourceRoot":"","sources":["../../src/bin/generateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAM5D"}
@@ -0,0 +1,10 @@
1
+ import fs from 'fs';
2
+ import { printSchema } from 'graphql';
3
+ import { configToSchema } from '../index.js';
4
+ export function generateSchema(config) {
5
+ const outputFile = process.env.PAYLOAD_GRAPHQL_SCHEMA_PATH || config.graphQL.schemaOutputFile;
6
+ const { schema } = configToSchema(config);
7
+ fs.writeFileSync(outputFile, printSchema(schema));
8
+ }
9
+
10
+ //# sourceMappingURL=generateSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bin/generateSchema.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport fs from 'fs'\nimport { printSchema } from 'graphql'\n\nimport { configToSchema } from '../index.js'\nexport function generateSchema(config: SanitizedConfig): void {\n const outputFile = process.env.PAYLOAD_GRAPHQL_SCHEMA_PATH || config.graphQL.schemaOutputFile\n\n const { schema } = configToSchema(config)\n\n fs.writeFileSync(outputFile, printSchema(schema))\n}\n"],"names":["fs","printSchema","configToSchema","generateSchema","config","outputFile","process","env","PAYLOAD_GRAPHQL_SCHEMA_PATH","graphQL","schemaOutputFile","schema","writeFileSync"],"mappings":"AAEA,OAAOA,QAAQ,KAAI;AACnB,SAASC,WAAW,QAAQ,UAAS;AAErC,SAASC,cAAc,QAAQ,cAAa;AAC5C,OAAO,SAASC,eAAeC,MAAuB;IACpD,MAAMC,aAAaC,QAAQC,GAAG,CAACC,2BAA2B,IAAIJ,OAAOK,OAAO,CAACC,gBAAgB;IAE7F,MAAM,EAAEC,MAAM,EAAE,GAAGT,eAAeE;IAElCJ,GAAGY,aAAa,CAACP,YAAYJ,YAAYU;AAC3C"}
@@ -0,0 +1,2 @@
1
+ export declare const bin: () => Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,qBAcf,CAAA"}
@@ -0,0 +1,17 @@
1
+ /* eslint-disable no-console */ import minimist from 'minimist';
2
+ import { findConfig, loadEnv } from 'payload/node';
3
+ import { generateSchema } from './generateSchema.js';
4
+ export const bin = async ()=>{
5
+ loadEnv();
6
+ const configPath = findConfig();
7
+ const config = await (await import(configPath)).default;
8
+ const args = minimist(process.argv.slice(2));
9
+ const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase();
10
+ if (script === 'generate:schema') {
11
+ return generateSchema(config);
12
+ }
13
+ console.log(`Unknown script: "${script}".`);
14
+ process.exit(1);
15
+ };
16
+
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js';
2
+ export { buildPaginatedListType } from '../schema/buildPaginatedListType.js';
3
+ export * as GraphQL from 'graphql';
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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,KAAK,OAAO,MAAM,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { GraphQLJSON, GraphQLJSONObject } from '../packages/graphql-type-json/index.js';
2
+ export { buildPaginatedListType } from '../schema/buildPaginatedListType.js';
3
+ export * as GraphQL from 'graphql';
4
+
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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 * 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"}
@@ -0,0 +1,3 @@
1
+ export { generateSchema } from '../bin/generateSchema.js';
2
+ export { buildObjectType } from '../schema/buildObjectType.js';
3
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { generateSchema } from '../bin/generateSchema.js';
2
+ export { buildObjectType } from '../schema/buildObjectType.js';
3
+
4
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { generateSchema } from '../bin/generateSchema.js'\nexport { buildObjectType } from '../schema/buildObjectType.js'\n"],"names":["generateSchema","buildObjectType"],"mappings":"AAAA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,eAAe,QAAQ,+BAA8B"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import type { OperationArgs } from 'graphql-http';
2
- import type { SanitizedConfig } from 'payload/types';
2
+ import type { SanitizedConfig } from 'payload';
3
3
  import * as GraphQL from 'graphql';
4
- export declare function configToSchema(config: SanitizedConfig): Promise<{
4
+ export declare function configToSchema(config: SanitizedConfig): {
5
5
  schema: GraphQL.GraphQLSchema;
6
6
  validationRules: (args: OperationArgs<any>) => GraphQL.ValidationRule[];
7
- }>;
7
+ };
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAelC,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IACrE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAA;IAC7B,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE,CAAA;CACxE,CAAC,CAsGD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,SAAS,CAAA;AAE3D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAelC,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG;IACvD,MAAM,EAAE,OAAO,CAAC,aAAa,CAAA;IAC7B,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE,CAAA;CACxE,CAsGA"}
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- /* eslint-disable no-param-reassign */ import * as GraphQL from 'graphql';
2
- import { createComplexityRule, fieldExtensionsEstimator, simpleEstimator } from 'graphql-query-complexity';
3
- import accessResolver from './resolvers/auth/access.js';
4
- import buildFallbackLocaleInputType from './schema/buildFallbackLocaleInputType.js';
5
- import buildLocaleInputType from './schema/buildLocaleInputType.js';
6
- import buildPoliciesType from './schema/buildPoliciesType.js';
7
- import initCollections from './schema/initCollections.js';
8
- import initGlobals from './schema/initGlobals.js';
1
+ import * as GraphQL from 'graphql';
2
+ import { createComplexityRule, fieldExtensionsEstimator, simpleEstimator } from './packages/graphql-query-complexity/index.js';
3
+ import { accessResolver } from './resolvers/auth/access.js';
4
+ import { buildFallbackLocaleInputType } from './schema/buildFallbackLocaleInputType.js';
5
+ import { buildLocaleInputType } from './schema/buildLocaleInputType.js';
6
+ import { buildPoliciesType } from './schema/buildPoliciesType.js';
7
+ import { initCollections } from './schema/initCollections.js';
8
+ import { initGlobals } from './schema/initGlobals.js';
9
9
  import { wrapCustomFields } from './utilities/wrapCustomResolver.js';
10
- export async function configToSchema(config) {
10
+ export function configToSchema(config) {
11
11
  const collections = config.collections.reduce((acc, collection)=>{
12
12
  acc[collection.slug] = {
13
13
  config: collection
@@ -18,6 +18,8 @@ export async function configToSchema(config) {
18
18
  config: config.globals
19
19
  };
20
20
  const graphqlResult = {
21
+ collections,
22
+ globals,
21
23
  Mutation: {
22
24
  name: 'Mutation',
23
25
  fields: {}
@@ -26,8 +28,6 @@ export async function configToSchema(config) {
26
28
  name: 'Query',
27
29
  fields: {}
28
30
  },
29
- collections,
30
- globals,
31
31
  types: {
32
32
  arrayTypes: {},
33
33
  blockInputTypes: {},
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { OperationArgs } from 'graphql-http'\nimport type { GraphQLInfo } from 'payload/config'\nimport type { SanitizedConfig } from 'payload/types'\n\nimport * as GraphQL from 'graphql'\nimport {\n createComplexityRule,\n fieldExtensionsEstimator,\n simpleEstimator,\n} from 'graphql-query-complexity'\n\nimport accessResolver from './resolvers/auth/access.js'\nimport buildFallbackLocaleInputType from './schema/buildFallbackLocaleInputType.js'\nimport buildLocaleInputType from './schema/buildLocaleInputType.js'\nimport buildPoliciesType from './schema/buildPoliciesType.js'\nimport initCollections from './schema/initCollections.js'\nimport initGlobals from './schema/initGlobals.js'\nimport { wrapCustomFields } from './utilities/wrapCustomResolver.js'\n\nexport async function configToSchema(config: SanitizedConfig): Promise<{\n schema: GraphQL.GraphQLSchema\n validationRules: (args: OperationArgs<any>) => GraphQL.ValidationRule[]\n}> {\n const collections = config.collections.reduce((acc, collection) => {\n acc[collection.slug] = {\n config: collection,\n }\n\n return acc\n }, {})\n\n const globals = {\n config: config.globals,\n }\n\n const graphqlResult: GraphQLInfo = {\n Mutation: {\n name: 'Mutation',\n fields: {},\n },\n Query: {\n name: 'Query',\n fields: {},\n },\n collections,\n globals,\n types: {\n arrayTypes: {},\n blockInputTypes: {},\n blockTypes: {},\n groupTypes: {},\n tabTypes: {},\n },\n }\n\n if (config.localization) {\n graphqlResult.types['localeInputType'] = buildLocaleInputType(config.localization)\n graphqlResult.types['fallbackLocaleInputType'] = buildFallbackLocaleInputType(\n config.localization,\n )\n }\n\n initCollections({ config, graphqlResult })\n initGlobals({ config, graphqlResult })\n\n graphqlResult.Query.fields['Access'] = {\n type: buildPoliciesType(config),\n resolve: accessResolver(config),\n }\n\n if (typeof config.graphQL.queries === 'function') {\n const customQueries = config.graphQL.queries(GraphQL, {\n ...graphqlResult,\n config,\n })\n graphqlResult.Query = {\n ...graphqlResult.Query,\n fields: {\n ...graphqlResult.Query.fields,\n ...wrapCustomFields((customQueries || {}) as never),\n },\n }\n }\n\n if (typeof config.graphQL.mutations === 'function') {\n const customMutations = config.graphQL.mutations(GraphQL, {\n ...graphqlResult,\n config,\n })\n graphqlResult.Mutation = {\n ...graphqlResult.Mutation,\n fields: {\n ...graphqlResult.Mutation.fields,\n ...wrapCustomFields((customMutations || {}) as never),\n },\n }\n }\n\n const query = new GraphQL.GraphQLObjectType(graphqlResult.Query)\n const mutation = new GraphQL.GraphQLObjectType(graphqlResult.Mutation)\n\n const schemaToCreate = {\n mutation,\n query,\n }\n\n const schema = new GraphQL.GraphQLSchema(schemaToCreate)\n\n const validationRules = (args) => [\n createComplexityRule({\n estimators: [\n fieldExtensionsEstimator(),\n simpleEstimator({ defaultComplexity: 1 }), // Fallback if complexity not set\n ],\n maximumComplexity: config.graphQL.maxComplexity,\n variables: args.variableValues,\n // onComplete: (complexity) => { console.log('Query Complexity:', complexity); },\n }),\n ]\n\n return {\n schema,\n validationRules,\n }\n}\n"],"names":["GraphQL","createComplexityRule","fieldExtensionsEstimator","simpleEstimator","accessResolver","buildFallbackLocaleInputType","buildLocaleInputType","buildPoliciesType","initCollections","initGlobals","wrapCustomFields","configToSchema","config","collections","reduce","acc","collection","slug","globals","graphqlResult","Mutation","name","fields","Query","types","arrayTypes","blockInputTypes","blockTypes","groupTypes","tabTypes","localization","type","resolve","graphQL","queries","customQueries","mutations","customMutations","query","GraphQLObjectType","mutation","schemaToCreate","schema","GraphQLSchema","validationRules","args","estimators","defaultComplexity","maximumComplexity","maxComplexity","variables","variableValues"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,oCAAoC,GAKpC,YAAYA,aAAa,UAAS;AAClC,SACEC,oBAAoB,EACpBC,wBAAwB,EACxBC,eAAe,QACV,2BAA0B;AAEjC,OAAOC,oBAAoB,6BAA4B;AACvD,OAAOC,kCAAkC,2CAA0C;AACnF,OAAOC,0BAA0B,mCAAkC;AACnE,OAAOC,uBAAuB,gCAA+B;AAC7D,OAAOC,qBAAqB,8BAA6B;AACzD,OAAOC,iBAAiB,0BAAyB;AACjD,SAASC,gBAAgB,QAAQ,oCAAmC;AAEpE,OAAO,eAAeC,eAAeC,MAAuB;IAI1D,MAAMC,cAAcD,OAAOC,WAAW,CAACC,MAAM,CAAC,CAACC,KAAKC;QAClDD,GAAG,CAACC,WAAWC,IAAI,CAAC,GAAG;YACrBL,QAAQI;QACV;QAEA,OAAOD;IACT,GAAG,CAAC;IAEJ,MAAMG,UAAU;QACdN,QAAQA,OAAOM,OAAO;IACxB;IAEA,MAAMC,gBAA6B;QACjCC,UAAU;YACRC,MAAM;YACNC,QAAQ,CAAC;QACX;QACAC,OAAO;YACLF,MAAM;YACNC,QAAQ,CAAC;QACX;QACAT;QACAK;QACAM,OAAO;YACLC,YAAY,CAAC;YACbC,iBAAiB,CAAC;YAClBC,YAAY,CAAC;YACbC,YAAY,CAAC;YACbC,UAAU,CAAC;QACb;IACF;IAEA,IAAIjB,OAAOkB,YAAY,EAAE;QACvBX,cAAcK,KAAK,CAAC,kBAAkB,GAAGlB,qBAAqBM,OAAOkB,YAAY;QACjFX,cAAcK,KAAK,CAAC,0BAA0B,GAAGnB,6BAC/CO,OAAOkB,YAAY;IAEvB;IAEAtB,gBAAgB;QAAEI;QAAQO;IAAc;IACxCV,YAAY;QAAEG;QAAQO;IAAc;IAEpCA,cAAcI,KAAK,CAACD,MAAM,CAAC,SAAS,GAAG;QACrCS,MAAMxB,kBAAkBK;QACxBoB,SAAS5B,eAAeQ;IAC1B;IAEA,IAAI,OAAOA,OAAOqB,OAAO,CAACC,OAAO,KAAK,YAAY;QAChD,MAAMC,gBAAgBvB,OAAOqB,OAAO,CAACC,OAAO,CAAClC,SAAS;YACpD,GAAGmB,aAAa;YAChBP;QACF;QACAO,cAAcI,KAAK,GAAG;YACpB,GAAGJ,cAAcI,KAAK;YACtBD,QAAQ;gBACN,GAAGH,cAAcI,KAAK,CAACD,MAAM;gBAC7B,GAAGZ,iBAAkByB,iBAAiB,CAAC,EAAY;YACrD;QACF;IACF;IAEA,IAAI,OAAOvB,OAAOqB,OAAO,CAACG,SAAS,KAAK,YAAY;QAClD,MAAMC,kBAAkBzB,OAAOqB,OAAO,CAACG,SAAS,CAACpC,SAAS;YACxD,GAAGmB,aAAa;YAChBP;QACF;QACAO,cAAcC,QAAQ,GAAG;YACvB,GAAGD,cAAcC,QAAQ;YACzBE,QAAQ;gBACN,GAAGH,cAAcC,QAAQ,CAACE,MAAM;gBAChC,GAAGZ,iBAAkB2B,mBAAmB,CAAC,EAAY;YACvD;QACF;IACF;IAEA,MAAMC,QAAQ,IAAItC,QAAQuC,iBAAiB,CAACpB,cAAcI,KAAK;IAC/D,MAAMiB,WAAW,IAAIxC,QAAQuC,iBAAiB,CAACpB,cAAcC,QAAQ;IAErE,MAAMqB,iBAAiB;QACrBD;QACAF;IACF;IAEA,MAAMI,SAAS,IAAI1C,QAAQ2C,aAAa,CAACF;IAEzC,MAAMG,kBAAkB,CAACC,OAAS;YAChC5C,qBAAqB;gBACnB6C,YAAY;oBACV5C;oBACAC,gBAAgB;wBAAE4C,mBAAmB;oBAAE;iBACxC;gBACDC,mBAAmBpC,OAAOqB,OAAO,CAACgB,aAAa;gBAC/CC,WAAWL,KAAKM,cAAc;YAEhC;SACD;IAED,OAAO;QACLT;QACAE;IACF;AACF"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { OperationArgs } from 'graphql-http'\nimport type { GraphQLInfo, SanitizedConfig } from 'payload'\n\nimport * as GraphQL from 'graphql'\n\nimport {\n createComplexityRule,\n fieldExtensionsEstimator,\n simpleEstimator,\n} from './packages/graphql-query-complexity/index.js'\nimport { accessResolver } from './resolvers/auth/access.js'\nimport { buildFallbackLocaleInputType } from './schema/buildFallbackLocaleInputType.js'\nimport { buildLocaleInputType } from './schema/buildLocaleInputType.js'\nimport { buildPoliciesType } from './schema/buildPoliciesType.js'\nimport { initCollections } from './schema/initCollections.js'\nimport { initGlobals } from './schema/initGlobals.js'\nimport { wrapCustomFields } from './utilities/wrapCustomResolver.js'\n\nexport function configToSchema(config: SanitizedConfig): {\n schema: GraphQL.GraphQLSchema\n validationRules: (args: OperationArgs<any>) => GraphQL.ValidationRule[]\n} {\n const collections = config.collections.reduce((acc, collection) => {\n acc[collection.slug] = {\n config: collection,\n }\n\n return acc\n }, {})\n\n const globals = {\n config: config.globals,\n }\n\n const graphqlResult: GraphQLInfo = {\n collections,\n globals,\n Mutation: {\n name: 'Mutation',\n fields: {},\n },\n Query: {\n name: 'Query',\n fields: {},\n },\n types: {\n arrayTypes: {},\n blockInputTypes: {},\n blockTypes: {},\n groupTypes: {},\n tabTypes: {},\n },\n }\n\n if (config.localization) {\n graphqlResult.types['localeInputType'] = buildLocaleInputType(config.localization)\n graphqlResult.types['fallbackLocaleInputType'] = buildFallbackLocaleInputType(\n config.localization,\n )\n }\n\n initCollections({ config, graphqlResult })\n initGlobals({ config, graphqlResult })\n\n graphqlResult.Query.fields['Access'] = {\n type: buildPoliciesType(config),\n resolve: accessResolver(config),\n }\n\n if (typeof config.graphQL.queries === 'function') {\n const customQueries = config.graphQL.queries(GraphQL, {\n ...graphqlResult,\n config,\n })\n graphqlResult.Query = {\n ...graphqlResult.Query,\n fields: {\n ...graphqlResult.Query.fields,\n ...wrapCustomFields((customQueries || {}) as never),\n },\n }\n }\n\n if (typeof config.graphQL.mutations === 'function') {\n const customMutations = config.graphQL.mutations(GraphQL, {\n ...graphqlResult,\n config,\n })\n graphqlResult.Mutation = {\n ...graphqlResult.Mutation,\n fields: {\n ...graphqlResult.Mutation.fields,\n ...wrapCustomFields((customMutations || {}) as never),\n },\n }\n }\n\n const query = new GraphQL.GraphQLObjectType(graphqlResult.Query)\n const mutation = new GraphQL.GraphQLObjectType(graphqlResult.Mutation)\n\n const schemaToCreate = {\n mutation,\n query,\n }\n\n const schema = new GraphQL.GraphQLSchema(schemaToCreate)\n\n const validationRules = (args) => [\n createComplexityRule({\n estimators: [\n fieldExtensionsEstimator(),\n simpleEstimator({ defaultComplexity: 1 }), // Fallback if complexity not set\n ],\n maximumComplexity: config.graphQL.maxComplexity,\n variables: args.variableValues,\n // onComplete: (complexity) => { console.log('Query Complexity:', complexity); },\n }),\n ]\n\n return {\n schema,\n validationRules,\n }\n}\n"],"names":["GraphQL","createComplexityRule","fieldExtensionsEstimator","simpleEstimator","accessResolver","buildFallbackLocaleInputType","buildLocaleInputType","buildPoliciesType","initCollections","initGlobals","wrapCustomFields","configToSchema","config","collections","reduce","acc","collection","slug","globals","graphqlResult","Mutation","name","fields","Query","types","arrayTypes","blockInputTypes","blockTypes","groupTypes","tabTypes","localization","type","resolve","graphQL","queries","customQueries","mutations","customMutations","query","GraphQLObjectType","mutation","schemaToCreate","schema","GraphQLSchema","validationRules","args","estimators","defaultComplexity","maximumComplexity","maxComplexity","variables","variableValues"],"mappings":"AAGA,YAAYA,aAAa,UAAS;AAElC,SACEC,oBAAoB,EACpBC,wBAAwB,EACxBC,eAAe,QACV,+CAA8C;AACrD,SAASC,cAAc,QAAQ,6BAA4B;AAC3D,SAASC,4BAA4B,QAAQ,2CAA0C;AACvF,SAASC,oBAAoB,QAAQ,mCAAkC;AACvE,SAASC,iBAAiB,QAAQ,gCAA+B;AACjE,SAASC,eAAe,QAAQ,8BAA6B;AAC7D,SAASC,WAAW,QAAQ,0BAAyB;AACrD,SAASC,gBAAgB,QAAQ,oCAAmC;AAEpE,OAAO,SAASC,eAAeC,MAAuB;IAIpD,MAAMC,cAAcD,OAAOC,WAAW,CAACC,MAAM,CAAC,CAACC,KAAKC;QAClDD,GAAG,CAACC,WAAWC,IAAI,CAAC,GAAG;YACrBL,QAAQI;QACV;QAEA,OAAOD;IACT,GAAG,CAAC;IAEJ,MAAMG,UAAU;QACdN,QAAQA,OAAOM,OAAO;IACxB;IAEA,MAAMC,gBAA6B;QACjCN;QACAK;QACAE,UAAU;YACRC,MAAM;YACNC,QAAQ,CAAC;QACX;QACAC,OAAO;YACLF,MAAM;YACNC,QAAQ,CAAC;QACX;QACAE,OAAO;YACLC,YAAY,CAAC;YACbC,iBAAiB,CAAC;YAClBC,YAAY,CAAC;YACbC,YAAY,CAAC;YACbC,UAAU,CAAC;QACb;IACF;IAEA,IAAIjB,OAAOkB,YAAY,EAAE;QACvBX,cAAcK,KAAK,CAAC,kBAAkB,GAAGlB,qBAAqBM,OAAOkB,YAAY;QACjFX,cAAcK,KAAK,CAAC,0BAA0B,GAAGnB,6BAC/CO,OAAOkB,YAAY;IAEvB;IAEAtB,gBAAgB;QAAEI;QAAQO;IAAc;IACxCV,YAAY;QAAEG;QAAQO;IAAc;IAEpCA,cAAcI,KAAK,CAACD,MAAM,CAAC,SAAS,GAAG;QACrCS,MAAMxB,kBAAkBK;QACxBoB,SAAS5B,eAAeQ;IAC1B;IAEA,IAAI,OAAOA,OAAOqB,OAAO,CAACC,OAAO,KAAK,YAAY;QAChD,MAAMC,gBAAgBvB,OAAOqB,OAAO,CAACC,OAAO,CAAClC,SAAS;YACpD,GAAGmB,aAAa;YAChBP;QACF;QACAO,cAAcI,KAAK,GAAG;YACpB,GAAGJ,cAAcI,KAAK;YACtBD,QAAQ;gBACN,GAAGH,cAAcI,KAAK,CAACD,MAAM;gBAC7B,GAAGZ,iBAAkByB,iBAAiB,CAAC,EAAY;YACrD;QACF;IACF;IAEA,IAAI,OAAOvB,OAAOqB,OAAO,CAACG,SAAS,KAAK,YAAY;QAClD,MAAMC,kBAAkBzB,OAAOqB,OAAO,CAACG,SAAS,CAACpC,SAAS;YACxD,GAAGmB,aAAa;YAChBP;QACF;QACAO,cAAcC,QAAQ,GAAG;YACvB,GAAGD,cAAcC,QAAQ;YACzBE,QAAQ;gBACN,GAAGH,cAAcC,QAAQ,CAACE,MAAM;gBAChC,GAAGZ,iBAAkB2B,mBAAmB,CAAC,EAAY;YACvD;QACF;IACF;IAEA,MAAMC,QAAQ,IAAItC,QAAQuC,iBAAiB,CAACpB,cAAcI,KAAK;IAC/D,MAAMiB,WAAW,IAAIxC,QAAQuC,iBAAiB,CAACpB,cAAcC,QAAQ;IAErE,MAAMqB,iBAAiB;QACrBD;QACAF;IACF;IAEA,MAAMI,SAAS,IAAI1C,QAAQ2C,aAAa,CAACF;IAEzC,MAAMG,kBAAkB,CAACC,OAAS;YAChC5C,qBAAqB;gBACnB6C,YAAY;oBACV5C;oBACAC,gBAAgB;wBAAE4C,mBAAmB;oBAAE;iBACxC;gBACDC,mBAAmBpC,OAAOqB,OAAO,CAACgB,aAAa;gBAC/CC,WAAWL,KAAKM,cAAc;YAEhC;SACD;IAED,OAAO;QACLT;QACAE;IACF;AACF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Created by Ivo Meißner on 28.07.17.
3
+ */
4
+ import type { DocumentNode, FieldNode, FragmentDefinitionNode, GraphQLCompositeType, GraphQLDirective, GraphQLField, GraphQLSchema, GraphQLUnionType, InlineFragmentNode, OperationDefinitionNode } from 'graphql';
5
+ import { GraphQLError, GraphQLInterfaceType, GraphQLObjectType, ValidationContext } from 'graphql';
6
+ export type ComplexityEstimatorArgs = {
7
+ args: {
8
+ [key: string]: any;
9
+ };
10
+ childComplexity: number;
11
+ context?: Record<string, any>;
12
+ field: GraphQLField<any, any>;
13
+ node: FieldNode;
14
+ type: GraphQLCompositeType;
15
+ };
16
+ export type ComplexityEstimator = (options: ComplexityEstimatorArgs) => number | void;
17
+ export type Complexity = any;
18
+ export interface QueryComplexityOptions {
19
+ context?: Record<string, any>;
20
+ createError?: (max: number, actual: number) => GraphQLError;
21
+ estimators: Array<ComplexityEstimator>;
22
+ maximumComplexity: number;
23
+ onComplete?: (complexity: number) => void;
24
+ operationName?: string;
25
+ variables?: Record<string, any>;
26
+ }
27
+ export declare function getComplexity(options: {
28
+ context?: Record<string, any>;
29
+ estimators: ComplexityEstimator[];
30
+ operationName?: string;
31
+ query: DocumentNode;
32
+ schema: GraphQLSchema;
33
+ variables?: Record<string, any>;
34
+ }): number;
35
+ export declare class QueryComplexity {
36
+ complexity: number;
37
+ context: ValidationContext;
38
+ estimators: Array<ComplexityEstimator>;
39
+ includeDirectiveDef: GraphQLDirective;
40
+ OperationDefinition: Record<string, any>;
41
+ options: QueryComplexityOptions;
42
+ requestContext?: Record<string, any>;
43
+ skipDirectiveDef: GraphQLDirective;
44
+ variableValues: Record<string, any>;
45
+ constructor(context: ValidationContext, options: QueryComplexityOptions);
46
+ createError(): GraphQLError;
47
+ nodeComplexity(node: FieldNode | FragmentDefinitionNode | InlineFragmentNode | OperationDefinitionNode, typeDef: GraphQLInterfaceType | GraphQLObjectType | GraphQLUnionType): number;
48
+ onOperationDefinitionEnter(operation: OperationDefinitionNode): void;
49
+ onOperationDefinitionLeave(operation: OperationDefinitionNode): GraphQLError | void;
50
+ }
51
+ //# sourceMappingURL=QueryComplexity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryComplexity.d.ts","sourceRoot":"","sources":["../../../src/packages/graphql-query-complexity/QueryComplexity.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,sBAAsB,EAEtB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EAGZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAEL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EAKjB,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AAOhB,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,oBAAoB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,uBAAuB,KAAK,MAAM,GAAG,IAAI,CAAA;AAGrF,MAAM,MAAM,UAAU,GAAG,GAAG,CAAA;AAO5B,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAI7B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,YAAY,CAAA;IAG3D,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAKtC,iBAAiB,EAAE,MAAM,CAAA;IAGzB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAGzC,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC,GAAG,MAAM,CAwBT;AAED,qBAAa,eAAe;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,mBAAmB,EAAE,gBAAgB,CAAA;IACrC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAEvB,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,sBAAsB;IAqBvE,WAAW,IAAI,YAAY;IAO3B,cAAc,CACZ,IAAI,EAAE,SAAS,GAAG,sBAAsB,GAAG,kBAAkB,GAAG,uBAAuB,EACvF,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,gBAAgB,GACnE,MAAM;IA8MT,0BAA0B,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IA8CpE,0BAA0B,CAAC,SAAS,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI;CAgBpF"}
@@ -0,0 +1,270 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */ /**
2
+ * Created by Ivo Meißner on 28.07.17.
3
+ */ import { getNamedType, GraphQLError, GraphQLInterfaceType, GraphQLObjectType, isAbstractType, isCompositeType, Kind, TypeInfo, ValidationContext, visit, visitWithTypeInfo } from 'graphql';
4
+ import { getArgumentValues, getDirectiveValues, getVariableValues } from 'graphql/execution/values.js';
5
+ function queryComplexityMessage(max, actual) {
6
+ return `The query exceeds the maximum complexity of ${max}. ` + `Actual complexity is ${actual}`;
7
+ }
8
+ export function getComplexity(options) {
9
+ const typeInfo = new TypeInfo(options.schema);
10
+ const errors = [];
11
+ const context = new ValidationContext(options.schema, options.query, typeInfo, (error)=>errors.push(error));
12
+ const visitor = new QueryComplexity(context, {
13
+ // Maximum complexity does not matter since we're only interested in the calculated complexity.
14
+ context: options.context,
15
+ estimators: options.estimators,
16
+ maximumComplexity: Infinity,
17
+ operationName: options.operationName,
18
+ variables: options.variables
19
+ });
20
+ visit(options.query, visitWithTypeInfo(typeInfo, visitor));
21
+ // Throw first error if any
22
+ if (errors.length) {
23
+ throw errors.pop();
24
+ }
25
+ return visitor.complexity;
26
+ }
27
+ export class QueryComplexity {
28
+ complexity;
29
+ context;
30
+ estimators;
31
+ includeDirectiveDef;
32
+ OperationDefinition;
33
+ options;
34
+ requestContext;
35
+ skipDirectiveDef;
36
+ variableValues;
37
+ constructor(context, options){
38
+ if (!(typeof options.maximumComplexity === 'number' && options.maximumComplexity > 0)) {
39
+ throw new Error('Maximum query complexity must be a positive number');
40
+ }
41
+ this.context = context;
42
+ this.complexity = 0;
43
+ this.options = options;
44
+ this.includeDirectiveDef = this.context.getSchema().getDirective('include');
45
+ this.skipDirectiveDef = this.context.getSchema().getDirective('skip');
46
+ this.estimators = options.estimators;
47
+ this.variableValues = {};
48
+ this.requestContext = options.context;
49
+ this.OperationDefinition = {
50
+ enter: this.onOperationDefinitionEnter,
51
+ leave: this.onOperationDefinitionLeave
52
+ };
53
+ }
54
+ createError() {
55
+ if (typeof this.options.createError === 'function') {
56
+ return this.options.createError(this.options.maximumComplexity, this.complexity);
57
+ }
58
+ return new GraphQLError(queryComplexityMessage(this.options.maximumComplexity, this.complexity));
59
+ }
60
+ nodeComplexity(node, typeDef) {
61
+ if (node.selectionSet) {
62
+ let fields = {};
63
+ if (typeDef instanceof GraphQLObjectType || typeDef instanceof GraphQLInterfaceType) {
64
+ fields = typeDef.getFields();
65
+ }
66
+ // Determine all possible types of the current node
67
+ let possibleTypeNames;
68
+ if (isAbstractType(typeDef)) {
69
+ possibleTypeNames = this.context.getSchema().getPossibleTypes(typeDef).map((t)=>t.name);
70
+ } else {
71
+ possibleTypeNames = [
72
+ typeDef.name
73
+ ];
74
+ }
75
+ // Collect complexities for all possible types individually
76
+ const selectionSetComplexities = node.selectionSet.selections.reduce((complexities, childNode)=>{
77
+ // let nodeComplexity = 0;
78
+ let innerComplexities = complexities;
79
+ let includeNode = true;
80
+ let skipNode = false;
81
+ for (const directive of childNode.directives ?? []){
82
+ const directiveName = directive.name.value;
83
+ switch(directiveName){
84
+ case 'include':
85
+ {
86
+ const values = getDirectiveValues(this.includeDirectiveDef, childNode, this.variableValues || {});
87
+ if (typeof values.if === 'boolean') {
88
+ includeNode = values.if;
89
+ }
90
+ break;
91
+ }
92
+ case 'skip':
93
+ {
94
+ const values = getDirectiveValues(this.skipDirectiveDef, childNode, this.variableValues || {});
95
+ if (typeof values.if === 'boolean') {
96
+ skipNode = values.if;
97
+ }
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ if (!includeNode || skipNode) {
103
+ return complexities;
104
+ }
105
+ switch(childNode.kind){
106
+ case Kind.FIELD:
107
+ {
108
+ const field = fields[childNode.name.value];
109
+ // Invalid field, should be caught by other validation rules
110
+ if (!field) {
111
+ break;
112
+ }
113
+ const fieldType = getNamedType(field.type);
114
+ // Get arguments
115
+ let args;
116
+ try {
117
+ args = getArgumentValues(field, childNode, this.variableValues || {});
118
+ } catch (e) {
119
+ this.context.reportError(e);
120
+ return complexities;
121
+ }
122
+ // Check if we have child complexity
123
+ let childComplexity = 0;
124
+ if (isCompositeType(fieldType)) {
125
+ childComplexity = this.nodeComplexity(childNode, fieldType);
126
+ }
127
+ // Run estimators one after another and return first valid complexity
128
+ // score
129
+ const estimatorArgs = {
130
+ type: typeDef,
131
+ args,
132
+ childComplexity,
133
+ context: this.requestContext,
134
+ field,
135
+ node: childNode
136
+ };
137
+ const validScore = this.estimators.find((estimator)=>{
138
+ const tmpComplexity = estimator(estimatorArgs);
139
+ if (typeof tmpComplexity === 'number' && !isNaN(tmpComplexity)) {
140
+ innerComplexities = addComplexities(tmpComplexity, complexities, possibleTypeNames);
141
+ return true;
142
+ }
143
+ return false;
144
+ });
145
+ if (!validScore) {
146
+ this.context.reportError(new GraphQLError(`No complexity could be calculated for field ${typeDef.name}.${field.name}. ` + 'At least one complexity estimator has to return a complexity score.'));
147
+ return complexities;
148
+ }
149
+ break;
150
+ }
151
+ case Kind.FRAGMENT_SPREAD:
152
+ {
153
+ const fragment = this.context.getFragment(childNode.name.value);
154
+ // Unknown fragment, should be caught by other validation rules
155
+ if (!fragment) {
156
+ break;
157
+ }
158
+ const fragmentType = this.context.getSchema().getType(fragment.typeCondition.name.value);
159
+ // Invalid fragment type, ignore. Should be caught by other validation rules
160
+ if (!isCompositeType(fragmentType)) {
161
+ break;
162
+ }
163
+ const nodeComplexity = this.nodeComplexity(fragment, fragmentType);
164
+ if (isAbstractType(fragmentType)) {
165
+ // Add fragment complexity for all possible types
166
+ innerComplexities = addComplexities(nodeComplexity, complexities, this.context.getSchema().getPossibleTypes(fragmentType).map((t)=>t.name));
167
+ } else {
168
+ // Add complexity for object type
169
+ innerComplexities = addComplexities(nodeComplexity, complexities, [
170
+ fragmentType.name
171
+ ]);
172
+ }
173
+ break;
174
+ }
175
+ case Kind.INLINE_FRAGMENT:
176
+ {
177
+ let inlineFragmentType = typeDef;
178
+ if (childNode.typeCondition && childNode.typeCondition.name) {
179
+ inlineFragmentType = this.context.getSchema().getType(childNode.typeCondition.name.value);
180
+ if (!isCompositeType(inlineFragmentType)) {
181
+ break;
182
+ }
183
+ }
184
+ const nodeComplexity = this.nodeComplexity(childNode, inlineFragmentType);
185
+ if (isAbstractType(inlineFragmentType)) {
186
+ // Add fragment complexity for all possible types
187
+ innerComplexities = addComplexities(nodeComplexity, complexities, this.context.getSchema().getPossibleTypes(inlineFragmentType).map((t)=>t.name));
188
+ } else {
189
+ // Add complexity for object type
190
+ innerComplexities = addComplexities(nodeComplexity, complexities, [
191
+ inlineFragmentType.name
192
+ ]);
193
+ }
194
+ break;
195
+ }
196
+ default:
197
+ {
198
+ innerComplexities = addComplexities(this.nodeComplexity(childNode, typeDef), complexities, possibleTypeNames);
199
+ break;
200
+ }
201
+ }
202
+ return innerComplexities;
203
+ }, {});
204
+ // Only return max complexity of all possible types
205
+ if (!selectionSetComplexities) {
206
+ return NaN;
207
+ }
208
+ return Math.max(...Object.values(selectionSetComplexities), 0);
209
+ }
210
+ return 0;
211
+ }
212
+ onOperationDefinitionEnter(operation) {
213
+ if (typeof this.options.operationName === 'string' && this.options.operationName !== operation.name.value) {
214
+ return;
215
+ }
216
+ // Get variable values from variables that are passed from options, merged
217
+ // with default values defined in the operation
218
+ const { coerced, errors } = getVariableValues(this.context.getSchema(), // We have to create a new array here because input argument is not readonly in graphql ~14.6.0
219
+ operation.variableDefinitions ? [
220
+ ...operation.variableDefinitions
221
+ ] : [], this.options.variables ?? {});
222
+ if (errors && errors.length) {
223
+ // We have input validation errors, report errors and abort
224
+ errors.forEach((error)=>this.context.reportError(error));
225
+ return;
226
+ }
227
+ this.variableValues = coerced;
228
+ switch(operation.operation){
229
+ case 'query':
230
+ this.complexity += this.nodeComplexity(operation, this.context.getSchema().getQueryType());
231
+ break;
232
+ case 'mutation':
233
+ this.complexity += this.nodeComplexity(operation, this.context.getSchema().getMutationType());
234
+ break;
235
+ case 'subscription':
236
+ this.complexity += this.nodeComplexity(operation, this.context.getSchema().getSubscriptionType());
237
+ break;
238
+ default:
239
+ throw new Error(`Query complexity could not be calculated for operation of type ${operation.operation}`);
240
+ }
241
+ }
242
+ onOperationDefinitionLeave(operation) {
243
+ if (typeof this.options.operationName === 'string' && this.options.operationName !== operation.name.value) {
244
+ return;
245
+ }
246
+ if (this.options.onComplete) {
247
+ this.options.onComplete(this.complexity);
248
+ }
249
+ if (this.complexity > this.options.maximumComplexity) {
250
+ return this.context.reportError(this.createError());
251
+ }
252
+ }
253
+ }
254
+ /**
255
+ * Adds a complexity to the complexity map for all possible types
256
+ * @param complexity
257
+ * @param complexityMap
258
+ * @param possibleTypes
259
+ */ function addComplexities(complexity, complexityMap, possibleTypes) {
260
+ for (const type of possibleTypes){
261
+ if (Object.prototype.hasOwnProperty.call(complexityMap, type)) {
262
+ complexityMap[type] += complexity;
263
+ } else {
264
+ complexityMap[type] = complexity;
265
+ }
266
+ }
267
+ return complexityMap;
268
+ }
269
+
270
+ //# sourceMappingURL=QueryComplexity.js.map