@payloadcms/graphql 3.0.0-alpha.0

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 (156) hide show
  1. package/dist/index.d.ts +8 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +162 -0
  4. package/dist/resolvers/auth/access.d.ts +5 -0
  5. package/dist/resolvers/auth/access.d.ts.map +1 -0
  6. package/dist/resolvers/auth/access.js +48 -0
  7. package/dist/resolvers/auth/forgotPassword.d.ts +4 -0
  8. package/dist/resolvers/auth/forgotPassword.d.ts.map +1 -0
  9. package/dist/resolvers/auth/forgotPassword.js +31 -0
  10. package/dist/resolvers/auth/init.d.ts +4 -0
  11. package/dist/resolvers/auth/init.d.ts.map +1 -0
  12. package/dist/resolvers/auth/init.js +25 -0
  13. package/dist/resolvers/auth/login.d.ts +7 -0
  14. package/dist/resolvers/auth/login.d.ts.map +1 -0
  15. package/dist/resolvers/auth/login.js +41 -0
  16. package/dist/resolvers/auth/logout.d.ts +4 -0
  17. package/dist/resolvers/auth/logout.d.ts.map +1 -0
  18. package/dist/resolvers/auth/logout.js +32 -0
  19. package/dist/resolvers/auth/me.d.ts +4 -0
  20. package/dist/resolvers/auth/me.d.ts.map +1 -0
  21. package/dist/resolvers/auth/me.js +30 -0
  22. package/dist/resolvers/auth/refresh.d.ts +5 -0
  23. package/dist/resolvers/auth/refresh.d.ts.map +1 -0
  24. package/dist/resolvers/auth/refresh.js +43 -0
  25. package/dist/resolvers/auth/resetPassword.d.ts +5 -0
  26. package/dist/resolvers/auth/resetPassword.d.ts.map +1 -0
  27. package/dist/resolvers/auth/resetPassword.js +41 -0
  28. package/dist/resolvers/auth/unlock.d.ts +5 -0
  29. package/dist/resolvers/auth/unlock.d.ts.map +1 -0
  30. package/dist/resolvers/auth/unlock.js +29 -0
  31. package/dist/resolvers/auth/verifyEmail.d.ts +5 -0
  32. package/dist/resolvers/auth/verifyEmail.d.ts.map +1 -0
  33. package/dist/resolvers/auth/verifyEmail.js +30 -0
  34. package/dist/resolvers/collections/create.d.ts +13 -0
  35. package/dist/resolvers/collections/create.d.ts.map +1 -0
  36. package/dist/resolvers/collections/create.js +30 -0
  37. package/dist/resolvers/collections/delete.d.ts +11 -0
  38. package/dist/resolvers/collections/delete.d.ts.map +1 -0
  39. package/dist/resolvers/collections/delete.js +34 -0
  40. package/dist/resolvers/collections/docAccess.d.ts +9 -0
  41. package/dist/resolvers/collections/docAccess.d.ts.map +1 -0
  42. package/dist/resolvers/collections/docAccess.js +24 -0
  43. package/dist/resolvers/collections/find.d.ts +17 -0
  44. package/dist/resolvers/collections/find.d.ts.map +1 -0
  45. package/dist/resolvers/collections/find.js +37 -0
  46. package/dist/resolvers/collections/findByID.d.ts +13 -0
  47. package/dist/resolvers/collections/findByID.d.ts.map +1 -0
  48. package/dist/resolvers/collections/findByID.js +34 -0
  49. package/dist/resolvers/collections/findVersionByID.d.ts +13 -0
  50. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -0
  51. package/dist/resolvers/collections/findVersionByID.js +34 -0
  52. package/dist/resolvers/collections/findVersions.d.ts +15 -0
  53. package/dist/resolvers/collections/findVersions.d.ts.map +1 -0
  54. package/dist/resolvers/collections/findVersions.js +37 -0
  55. package/dist/resolvers/collections/restoreVersion.d.ts +9 -0
  56. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -0
  57. package/dist/resolvers/collections/restoreVersion.js +27 -0
  58. package/dist/resolvers/collections/update.d.ts +14 -0
  59. package/dist/resolvers/collections/update.d.ts.map +1 -0
  60. package/dist/resolvers/collections/update.js +37 -0
  61. package/dist/resolvers/globals/docAccess.d.ts +7 -0
  62. package/dist/resolvers/globals/docAccess.d.ts.map +1 -0
  63. package/dist/resolvers/globals/docAccess.js +23 -0
  64. package/dist/resolvers/globals/findOne.d.ts +3 -0
  65. package/dist/resolvers/globals/findOne.d.ts.map +1 -0
  66. package/dist/resolvers/globals/findOne.js +30 -0
  67. package/dist/resolvers/globals/findVersionByID.d.ts +11 -0
  68. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -0
  69. package/dist/resolvers/globals/findVersionByID.js +29 -0
  70. package/dist/resolvers/globals/findVersions.d.ts +13 -0
  71. package/dist/resolvers/globals/findVersions.d.ts.map +1 -0
  72. package/dist/resolvers/globals/findVersions.js +29 -0
  73. package/dist/resolvers/globals/index.d.ts +7 -0
  74. package/dist/resolvers/globals/index.d.ts.map +1 -0
  75. package/dist/resolvers/globals/index.js +39 -0
  76. package/dist/resolvers/globals/restoreVersion.d.ts +9 -0
  77. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -0
  78. package/dist/resolvers/globals/restoreVersion.js +26 -0
  79. package/dist/resolvers/globals/update.d.ts +14 -0
  80. package/dist/resolvers/globals/update.d.ts.map +1 -0
  81. package/dist/resolvers/globals/update.js +31 -0
  82. package/dist/resolvers/types.d.ts +8 -0
  83. package/dist/resolvers/types.d.ts.map +1 -0
  84. package/dist/resolvers/types.js +6 -0
  85. package/dist/schema/buildFallbackLocaleInputType.d.ts +5 -0
  86. package/dist/schema/buildFallbackLocaleInputType.d.ts.map +1 -0
  87. package/dist/schema/buildFallbackLocaleInputType.js +34 -0
  88. package/dist/schema/buildLocaleInputType.d.ts +6 -0
  89. package/dist/schema/buildLocaleInputType.d.ts.map +1 -0
  90. package/dist/schema/buildLocaleInputType.js +31 -0
  91. package/dist/schema/buildMutationInputType.d.ts +23 -0
  92. package/dist/schema/buildMutationInputType.d.ts.map +1 -0
  93. package/dist/schema/buildMutationInputType.js +293 -0
  94. package/dist/schema/buildObjectType.d.ts +19 -0
  95. package/dist/schema/buildObjectType.d.ts.map +1 -0
  96. package/dist/schema/buildObjectType.js +508 -0
  97. package/dist/schema/buildPaginatedListType.d.ts +4 -0
  98. package/dist/schema/buildPaginatedListType.d.ts.map +1 -0
  99. package/dist/schema/buildPaginatedListType.js +52 -0
  100. package/dist/schema/buildPoliciesType.d.ts +29 -0
  101. package/dist/schema/buildPoliciesType.d.ts.map +1 -0
  102. package/dist/schema/buildPoliciesType.js +210 -0
  103. package/dist/schema/buildWhereInputType.d.ts +24 -0
  104. package/dist/schema/buildWhereInputType.d.ts.map +1 -0
  105. package/dist/schema/buildWhereInputType.js +102 -0
  106. package/dist/schema/fieldToWhereInputSchemaMap.d.ts +7 -0
  107. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -0
  108. package/dist/schema/fieldToWhereInputSchemaMap.js +118 -0
  109. package/dist/schema/initCollections.d.ts +9 -0
  110. package/dist/schema/initCollections.d.ts.map +1 -0
  111. package/dist/schema/initCollections.js +492 -0
  112. package/dist/schema/initGlobals.d.ts +9 -0
  113. package/dist/schema/initGlobals.d.ts.map +1 -0
  114. package/dist/schema/initGlobals.js +193 -0
  115. package/dist/schema/isFieldNullable.d.ts +4 -0
  116. package/dist/schema/isFieldNullable.d.ts.map +1 -0
  117. package/dist/schema/isFieldNullable.js +19 -0
  118. package/dist/schema/operators.d.ts +10 -0
  119. package/dist/schema/operators.d.ts.map +1 -0
  120. package/dist/schema/operators.js +41 -0
  121. package/dist/schema/recursivelyBuildNestedPaths.d.ts +9 -0
  122. package/dist/schema/recursivelyBuildNestedPaths.d.ts.map +1 -0
  123. package/dist/schema/recursivelyBuildNestedPaths.js +79 -0
  124. package/dist/schema/withNullableType.d.ts +5 -0
  125. package/dist/schema/withNullableType.d.ts.map +1 -0
  126. package/dist/schema/withNullableType.js +23 -0
  127. package/dist/schema/withOperators.d.ts +16 -0
  128. package/dist/schema/withOperators.d.ts.map +1 -0
  129. package/dist/schema/withOperators.js +296 -0
  130. package/dist/utilities/combineParentName.d.ts +3 -0
  131. package/dist/utilities/combineParentName.d.ts.map +1 -0
  132. package/dist/utilities/combineParentName.js +20 -0
  133. package/dist/utilities/formatName.d.ts +3 -0
  134. package/dist/utilities/formatName.d.ts.map +1 -0
  135. package/dist/utilities/formatName.js +35 -0
  136. package/dist/utilities/formatName.spec.js +26 -0
  137. package/dist/utilities/formatOptions.d.ts +4 -0
  138. package/dist/utilities/formatOptions.d.ts.map +1 -0
  139. package/dist/utilities/formatOptions.js +37 -0
  140. package/dist/utilities/getCheckIfLocaleObject.d.ts +5 -0
  141. package/dist/utilities/getCheckIfLocaleObject.d.ts.map +1 -0
  142. package/dist/utilities/getCheckIfLocaleObject.js +13 -0
  143. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts +3 -0
  144. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts.map +1 -0
  145. package/dist/utilities/groupOrTabHasRequiredSubfield.js +24 -0
  146. package/dist/utilities/isolateTransactionID.d.ts +2 -0
  147. package/dist/utilities/isolateTransactionID.d.ts.map +1 -0
  148. package/dist/utilities/isolateTransactionID.js +3 -0
  149. package/dist/utilities/uppercase.d.ts +3 -0
  150. package/dist/utilities/uppercase.d.ts.map +1 -0
  151. package/dist/utilities/uppercase.js +21 -0
  152. package/dist/utilities/wrapCustomResolver.d.ts +9 -0
  153. package/dist/utilities/wrapCustomResolver.d.ts.map +1 -0
  154. package/dist/utilities/wrapCustomResolver.js +29 -0
  155. package/package.json +42 -0
  156. package/src/index.ts +126 -0
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@payloadcms/graphql",
3
+ "version": "3.0.0-alpha.0",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js",
9
+ "require": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "devDependencies": {
14
+ "ts-essentials": "7.0.3",
15
+ "@payloadcms/eslint-config": "1.1.1",
16
+ "payload": "2.11.0"
17
+ },
18
+ "dependencies": {
19
+ "graphql": "16.8.1",
20
+ "graphql-http": "^1.22.0",
21
+ "graphql-playground-html": "1.6.30",
22
+ "graphql-query-complexity": "0.12.0",
23
+ "graphql-scalars": "1.22.2",
24
+ "graphql-type-json": "0.3.2",
25
+ "pluralize": "8.0.0"
26
+ },
27
+ "peerDependencies": {
28
+ "payload": "^2.0.0"
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org/"
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "scripts": {
37
+ "build": "pnpm build:swc && pnpm build:types",
38
+ "build:swc": "swc ./src -d ./dist --config-file .swcrc",
39
+ "build:types": "tsc --emitDeclarationOnly --outDir dist",
40
+ "clean": "rimraf {dist,*.tsbuildinfo}"
41
+ }
42
+ }
package/src/index.ts ADDED
@@ -0,0 +1,126 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import * as GraphQL from 'graphql'
3
+ import { OperationArgs } from 'graphql-http'
4
+
5
+ import {
6
+ fieldExtensionsEstimator,
7
+ simpleEstimator,
8
+ createComplexityRule,
9
+ } from 'graphql-query-complexity'
10
+
11
+ import type { GraphQLInfo } from 'payload/config'
12
+ import type { SanitizedConfig } from 'payload/types'
13
+ import accessResolver from './resolvers/auth/access'
14
+ import initCollections from './schema/initCollections'
15
+ import initGlobals from './schema/initGlobals'
16
+ import buildFallbackLocaleInputType from './schema/buildFallbackLocaleInputType'
17
+ import buildLocaleInputType from './schema/buildLocaleInputType'
18
+ import buildPoliciesType from './schema/buildPoliciesType'
19
+ import { wrapCustomFields } from './utilities/wrapCustomResolver'
20
+
21
+ export async function configToSchema(config: SanitizedConfig): Promise<{
22
+ schema: GraphQL.GraphQLSchema
23
+ validationRules: (args: OperationArgs<any>) => GraphQL.ValidationRule[]
24
+ }> {
25
+ const collections = config.collections.reduce((acc, collection) => {
26
+ acc[collection.slug] = {
27
+ config: collection,
28
+ }
29
+
30
+ return acc
31
+ }, {})
32
+
33
+ const globals = {
34
+ config: config.globals,
35
+ }
36
+
37
+ let graphqlResult: GraphQLInfo = {
38
+ types: {
39
+ arrayTypes: {},
40
+ blockInputTypes: {},
41
+ blockTypes: {},
42
+ groupTypes: {},
43
+ tabTypes: {},
44
+ },
45
+ Query: {
46
+ name: 'Query',
47
+ fields: {},
48
+ },
49
+ Mutation: {
50
+ name: 'Mutation',
51
+ fields: {},
52
+ },
53
+ collections,
54
+ globals,
55
+ }
56
+
57
+ if (config.localization) {
58
+ graphqlResult.types['localeInputType'] = buildLocaleInputType(config.localization)
59
+ graphqlResult.types['fallbackLocaleInputType'] = buildFallbackLocaleInputType(
60
+ config.localization,
61
+ )
62
+ }
63
+
64
+ initCollections({ config, graphqlResult })
65
+ initGlobals({ config, graphqlResult })
66
+
67
+ graphqlResult.Query.fields['Access'] = {
68
+ resolve: accessResolver(config),
69
+ type: buildPoliciesType(config),
70
+ }
71
+
72
+ if (typeof config.graphQL.queries === 'function') {
73
+ const customQueries = config.graphQL.queries(GraphQL, {
74
+ ...graphqlResult,
75
+ config,
76
+ })
77
+ graphqlResult.Query = {
78
+ ...graphqlResult.Query,
79
+ fields: {
80
+ ...graphqlResult.Query.fields,
81
+ ...wrapCustomFields((customQueries || {}) as never),
82
+ },
83
+ }
84
+ }
85
+
86
+ if (typeof config.graphQL.mutations === 'function') {
87
+ const customMutations = config.graphQL.mutations(GraphQL, {
88
+ ...graphqlResult,
89
+ config,
90
+ })
91
+ graphqlResult.Mutation = {
92
+ ...graphqlResult.Mutation,
93
+ fields: {
94
+ ...graphqlResult.Mutation.fields,
95
+ ...wrapCustomFields((customMutations || {}) as never),
96
+ },
97
+ }
98
+ }
99
+
100
+ const query = new GraphQL.GraphQLObjectType(graphqlResult.Query)
101
+ const mutation = new GraphQL.GraphQLObjectType(graphqlResult.Mutation)
102
+
103
+ const schemaToCreate = {
104
+ mutation,
105
+ query,
106
+ }
107
+
108
+ const schema = new GraphQL.GraphQLSchema(schemaToCreate)
109
+
110
+ const validationRules = (args) => [
111
+ createComplexityRule({
112
+ estimators: [
113
+ fieldExtensionsEstimator(),
114
+ simpleEstimator({ defaultComplexity: 1 }), // Fallback if complexity not set
115
+ ],
116
+ maximumComplexity: config.graphQL.maxComplexity,
117
+ variables: args.variableValues,
118
+ // onComplete: (complexity) => { console.log('Query Complexity:', complexity); },
119
+ }),
120
+ ]
121
+
122
+ return {
123
+ schema,
124
+ validationRules,
125
+ }
126
+ }