@payloadcms/figma 0.0.1-alpha.3 → 0.0.1-alpha.31

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 (229) hide show
  1. package/dist/api/control-plane.d.ts +22 -1
  2. package/dist/api/control-plane.d.ts.map +1 -1
  3. package/dist/api/control-plane.js +54 -15
  4. package/dist/api/control-plane.js.map +1 -1
  5. package/dist/api/figma-api.d.ts.map +1 -1
  6. package/dist/api/figma-api.js +42 -12
  7. package/dist/api/figma-api.js.map +1 -1
  8. package/dist/auth/callback-server.d.ts.map +1 -1
  9. package/dist/auth/callback-server.js +2 -1
  10. package/dist/auth/callback-server.js.map +1 -1
  11. package/dist/auth/crypto-utils.d.ts.map +1 -1
  12. package/dist/auth/crypto-utils.js +5 -5
  13. package/dist/auth/crypto-utils.js.map +1 -1
  14. package/dist/auth/oauth-flow.d.ts +1 -1
  15. package/dist/auth/oauth-flow.d.ts.map +1 -1
  16. package/dist/auth/oauth-flow.js +5 -5
  17. package/dist/auth/oauth-flow.js.map +1 -1
  18. package/dist/auth/project-token.d.ts.map +1 -1
  19. package/dist/auth/project-token.js +9 -4
  20. package/dist/auth/project-token.js.map +1 -1
  21. package/dist/auth/token-store.d.ts +10 -0
  22. package/dist/auth/token-store.d.ts.map +1 -1
  23. package/dist/auth/token-store.js +20 -0
  24. package/dist/auth/token-store.js.map +1 -1
  25. package/dist/cli.js +3 -0
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/deploy.d.ts +4 -0
  28. package/dist/commands/deploy.d.ts.map +1 -1
  29. package/dist/commands/deploy.js +68 -126
  30. package/dist/commands/deploy.js.map +1 -1
  31. package/dist/commands/init.d.ts +1 -5
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +90 -85
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/list-tokens.js +2 -2
  36. package/dist/commands/list-tokens.js.map +1 -1
  37. package/dist/commands/login.d.ts +8 -1
  38. package/dist/commands/login.d.ts.map +1 -1
  39. package/dist/commands/login.js +12 -6
  40. package/dist/commands/login.js.map +1 -1
  41. package/dist/commands/logout.js +2 -2
  42. package/dist/commands/logout.js.map +1 -1
  43. package/dist/config/oauth.d.ts +5 -0
  44. package/dist/config/oauth.d.ts.map +1 -1
  45. package/dist/config/oauth.js +9 -4
  46. package/dist/config/oauth.js.map +1 -1
  47. package/dist/db-content-api/README.md +108 -0
  48. package/dist/db-content-api/generated/content-api-types.d.ts +3702 -0
  49. package/dist/db-content-api/generated/content-api-types.d.ts.map +1 -0
  50. package/dist/db-content-api/generated/content-api-types.js +7 -0
  51. package/dist/db-content-api/generated/content-api-types.js.map +1 -0
  52. package/dist/db-content-api/index.d.ts +18 -0
  53. package/dist/db-content-api/index.d.ts.map +1 -0
  54. package/dist/db-content-api/index.js +572 -0
  55. package/dist/db-content-api/index.js.map +1 -0
  56. package/dist/db-content-api/temp-utilities/pagination.d.ts +13 -0
  57. package/dist/db-content-api/temp-utilities/pagination.d.ts.map +1 -0
  58. package/dist/db-content-api/temp-utilities/pagination.js +45 -0
  59. package/dist/db-content-api/temp-utilities/pagination.js.map +1 -0
  60. package/dist/db-content-api/temp-utilities/slug.d.ts +2 -0
  61. package/dist/db-content-api/temp-utilities/slug.d.ts.map +1 -0
  62. package/dist/db-content-api/temp-utilities/slug.js +3 -0
  63. package/dist/db-content-api/temp-utilities/slug.js.map +1 -0
  64. package/dist/db-content-api/temp-utilities/sorting.d.ts +7 -0
  65. package/dist/db-content-api/temp-utilities/sorting.d.ts.map +1 -0
  66. package/dist/db-content-api/temp-utilities/sorting.js +71 -0
  67. package/dist/db-content-api/temp-utilities/sorting.js.map +1 -0
  68. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts +4 -0
  69. package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts.map +1 -0
  70. package/dist/db-content-api/temp-utilities/unwrapDocument.js +53 -0
  71. package/dist/db-content-api/temp-utilities/unwrapDocument.js.map +1 -0
  72. package/dist/db-content-api/utilities/auth.d.ts +30 -0
  73. package/dist/db-content-api/utilities/auth.d.ts.map +1 -0
  74. package/dist/db-content-api/utilities/auth.js +81 -0
  75. package/dist/db-content-api/utilities/auth.js.map +1 -0
  76. package/dist/db-content-api/utilities/data/applyDefaults.d.ts +7 -0
  77. package/dist/db-content-api/utilities/data/applyDefaults.d.ts.map +1 -0
  78. package/dist/db-content-api/utilities/data/applyDefaults.js +59 -0
  79. package/dist/db-content-api/utilities/data/applyDefaults.js.map +1 -0
  80. package/dist/db-content-api/utilities/data/castFieldValue.d.ts +11 -0
  81. package/dist/db-content-api/utilities/data/castFieldValue.d.ts.map +1 -0
  82. package/dist/db-content-api/utilities/data/castFieldValue.js +66 -0
  83. package/dist/db-content-api/utilities/data/castFieldValue.js.map +1 -0
  84. package/dist/db-content-api/utilities/data/index.d.ts +28 -0
  85. package/dist/db-content-api/utilities/data/index.d.ts.map +1 -0
  86. package/dist/db-content-api/utilities/data/index.js +166 -0
  87. package/dist/db-content-api/utilities/data/index.js.map +1 -0
  88. package/dist/db-content-api/utilities/data/stripFields.d.ts +48 -0
  89. package/dist/db-content-api/utilities/data/stripFields.d.ts.map +1 -0
  90. package/dist/db-content-api/utilities/data/stripFields.js +195 -0
  91. package/dist/db-content-api/utilities/data/stripFields.js.map +1 -0
  92. package/dist/db-content-api/utilities/joins.d.ts +55 -0
  93. package/dist/db-content-api/utilities/joins.d.ts.map +1 -0
  94. package/dist/db-content-api/utilities/joins.js +130 -0
  95. package/dist/db-content-api/utilities/joins.js.map +1 -0
  96. package/dist/db-content-api/utilities/where.d.ts +12 -0
  97. package/dist/db-content-api/utilities/where.d.ts.map +1 -0
  98. package/dist/db-content-api/utilities/where.js +107 -0
  99. package/dist/db-content-api/utilities/where.js.map +1 -0
  100. package/dist/endpoints/health.d.ts +3 -0
  101. package/dist/endpoints/health.d.ts.map +1 -0
  102. package/dist/endpoints/health.js +11 -0
  103. package/dist/endpoints/health.js.map +1 -0
  104. package/dist/exports/client.d.ts +4 -0
  105. package/dist/exports/client.d.ts.map +1 -0
  106. package/dist/exports/client.js +5 -0
  107. package/dist/exports/client.js.map +1 -0
  108. package/dist/index.d.ts +2 -1
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +3 -1
  111. package/dist/index.js.map +1 -1
  112. package/dist/oauth/components/LoginButton/index.d.ts.map +1 -1
  113. package/dist/oauth/components/LoginButton/index.js +50 -6
  114. package/dist/oauth/components/LoginButton/index.js.map +1 -1
  115. package/dist/oauth/components/LoginButton/index.scss +50 -3
  116. package/dist/oauth/components/LogoutButton/index.d.ts.map +1 -1
  117. package/dist/oauth/components/LogoutButton/index.js +0 -1
  118. package/dist/oauth/components/LogoutButton/index.js.map +1 -1
  119. package/dist/oauth/defaults.d.ts.map +1 -1
  120. package/dist/oauth/defaults.js +29 -5
  121. package/dist/oauth/defaults.js.map +1 -1
  122. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -1
  123. package/dist/oauth/endpoints/getLoginEndpoint.js +1 -1
  124. package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -1
  125. package/dist/oauth/index.d.ts.map +1 -1
  126. package/dist/oauth/index.js +42 -6
  127. package/dist/oauth/index.js.map +1 -1
  128. package/dist/oauth/strategy/index.d.ts.map +1 -1
  129. package/dist/oauth/strategy/index.js +6 -2
  130. package/dist/oauth/strategy/index.js.map +1 -1
  131. package/dist/oauth/types.d.ts +6 -6
  132. package/dist/oauth/types.d.ts.map +1 -1
  133. package/dist/oauth/types.js.map +1 -1
  134. package/dist/oauth/utilities/createCookieOptions.d.ts.map +1 -1
  135. package/dist/oauth/utilities/createCookieOptions.js.map +1 -1
  136. package/dist/oauth/utilities/isDuplicateKeyError.d.ts +7 -0
  137. package/dist/oauth/utilities/isDuplicateKeyError.d.ts.map +1 -0
  138. package/dist/oauth/utilities/isDuplicateKeyError.js +14 -0
  139. package/dist/oauth/utilities/isDuplicateKeyError.js.map +1 -0
  140. package/dist/oauth/utilities/refreshTokens.d.ts.map +1 -1
  141. package/dist/oauth/utilities/refreshTokens.js +1 -1
  142. package/dist/oauth/utilities/refreshTokens.js.map +1 -1
  143. package/dist/plugin/build-config.d.ts +21 -4
  144. package/dist/plugin/build-config.d.ts.map +1 -1
  145. package/dist/plugin/build-config.js +103 -9
  146. package/dist/plugin/build-config.js.map +1 -1
  147. package/dist/storage-content-api/api-types.d.ts +161 -0
  148. package/dist/storage-content-api/api-types.d.ts.map +1 -0
  149. package/dist/storage-content-api/api-types.js +6 -0
  150. package/dist/storage-content-api/api-types.js.map +1 -0
  151. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts +9 -0
  152. package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts.map +1 -0
  153. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js +42 -0
  154. package/dist/storage-content-api/client-uploads/ClientUploadHandler.js.map +1 -0
  155. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts +13 -0
  156. package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts.map +1 -0
  157. package/dist/storage-content-api/client-uploads/generateSignedURL.js +31 -0
  158. package/dist/storage-content-api/client-uploads/generateSignedURL.js.map +1 -0
  159. package/dist/storage-content-api/client.d.ts +6 -0
  160. package/dist/storage-content-api/client.d.ts.map +1 -0
  161. package/dist/storage-content-api/client.js +36 -0
  162. package/dist/storage-content-api/client.js.map +1 -0
  163. package/dist/storage-content-api/generateURL.d.ts +7 -0
  164. package/dist/storage-content-api/generateURL.d.ts.map +1 -0
  165. package/dist/storage-content-api/generateURL.js +7 -0
  166. package/dist/storage-content-api/generateURL.js.map +1 -0
  167. package/dist/storage-content-api/handleDelete.d.ts +8 -0
  168. package/dist/storage-content-api/handleDelete.d.ts.map +1 -0
  169. package/dist/storage-content-api/handleDelete.js +15 -0
  170. package/dist/storage-content-api/handleDelete.js.map +1 -0
  171. package/dist/storage-content-api/handleUpload.d.ts +11 -0
  172. package/dist/storage-content-api/handleUpload.d.ts.map +1 -0
  173. package/dist/storage-content-api/handleUpload.js +136 -0
  174. package/dist/storage-content-api/handleUpload.js.map +1 -0
  175. package/dist/storage-content-api/index.d.ts +5 -0
  176. package/dist/storage-content-api/index.d.ts.map +1 -0
  177. package/dist/storage-content-api/index.js +31 -0
  178. package/dist/storage-content-api/index.js.map +1 -0
  179. package/dist/storage-content-api/staticHandler.d.ts +10 -0
  180. package/dist/storage-content-api/staticHandler.d.ts.map +1 -0
  181. package/dist/storage-content-api/staticHandler.js +55 -0
  182. package/dist/storage-content-api/staticHandler.js.map +1 -0
  183. package/dist/storage-content-api/types.d.ts +10 -0
  184. package/dist/storage-content-api/types.d.ts.map +1 -0
  185. package/dist/storage-content-api/types.js +3 -0
  186. package/dist/storage-content-api/types.js.map +1 -0
  187. package/dist/templates/README.md +19 -0
  188. package/dist/utils/env-management.d.ts +9 -8
  189. package/dist/utils/env-management.d.ts.map +1 -1
  190. package/dist/utils/env-management.js +73 -74
  191. package/dist/utils/env-management.js.map +1 -1
  192. package/dist/utils/formatter.d.ts.map +1 -1
  193. package/dist/utils/formatter.js +1 -7
  194. package/dist/utils/formatter.js.map +1 -1
  195. package/dist/utils/lambda-config.d.ts.map +1 -1
  196. package/dist/utils/lambda-config.js +1 -0
  197. package/dist/utils/lambda-config.js.map +1 -1
  198. package/dist/utils/messages.d.ts.map +1 -1
  199. package/dist/utils/messages.js +5 -7
  200. package/dist/utils/messages.js.map +1 -1
  201. package/dist/utils/payload-config-ast.d.ts +22 -3
  202. package/dist/utils/payload-config-ast.d.ts.map +1 -1
  203. package/dist/utils/payload-config-ast.js +89 -31
  204. package/dist/utils/payload-config-ast.js.map +1 -1
  205. package/dist/utils/payload-config-finder.d.ts +2 -2
  206. package/dist/utils/payload-config-finder.d.ts.map +1 -1
  207. package/dist/utils/payload-config-finder.js +48 -9
  208. package/dist/utils/payload-config-finder.js.map +1 -1
  209. package/dist/utils/payload-config-modifier.d.ts.map +1 -1
  210. package/dist/utils/payload-config-modifier.js +33 -4
  211. package/dist/utils/payload-config-modifier.js.map +1 -1
  212. package/dist/utils/payload-package-check.d.ts +5 -0
  213. package/dist/utils/payload-package-check.d.ts.map +1 -1
  214. package/dist/utils/payload-package-check.js +48 -4
  215. package/dist/utils/payload-package-check.js.map +1 -1
  216. package/dist/utils/project.d.ts.map +1 -1
  217. package/dist/utils/project.js +8 -6
  218. package/dist/utils/project.js.map +1 -1
  219. package/dist/utils/s3-upload.d.ts +0 -1
  220. package/dist/utils/s3-upload.d.ts.map +1 -1
  221. package/dist/utils/s3-upload.js +10 -3
  222. package/dist/utils/s3-upload.js.map +1 -1
  223. package/dist/utils/token-display.d.ts.map +1 -1
  224. package/dist/utils/token-display.js +11 -5
  225. package/dist/utils/token-display.js.map +1 -1
  226. package/dist/utils/typescript-validator.d.ts.map +1 -1
  227. package/dist/utils/typescript-validator.js +1 -6
  228. package/dist/utils/typescript-validator.js.map +1 -1
  229. package/package.json +24 -7
@@ -0,0 +1,572 @@
1
+ import createClient from 'openapi-fetch';
2
+ import { createDatabaseAdapter } from 'payload';
3
+ import { v4 as uuid } from 'uuid';
4
+ import { getPaginationData } from './temp-utilities/pagination.js';
5
+ import { getGlobalSlug } from './temp-utilities/slug.js';
6
+ import { addFallbackSort, convertPayloadSortToContentAPI } from './temp-utilities/sorting.js';
7
+ import { unwrapDocument } from './temp-utilities/unwrapDocument.js';
8
+ import { createAuthMiddleware, createErrorMiddleware } from './utilities/auth.js';
9
+ import { dataToContentAPI } from './utilities/data/index.js';
10
+ import { convertPayloadJoinsToContentAPI } from './utilities/joins.js';
11
+ import { convertPayloadWhereToContentAPI } from './utilities/where.js';
12
+ async function init() {
13
+ if (this.auth.mode === 'apiKey') {
14
+ this.payload.logger.info('Using API Key authentication');
15
+ } else if (this.auth.mode === 'tokenStore') {
16
+ this.payload.logger.info('Using TokenStore authentication (local dev)');
17
+ } else {
18
+ this.payload.logger.info('Using Dev JWT authentication (testing)');
19
+ }
20
+ if (process.env.PAYLOAD_DROP_DATABASE === 'true') {
21
+ this.payload.logger.info(`---- DROPPING CONTENT API SYSTEM (${this.contentSystemId}) ----`);
22
+ try {
23
+ await fetch(`${this.url}/dev/clear-db`, {
24
+ body: JSON.stringify({
25
+ contentSystemId: this.contentSystemId
26
+ }),
27
+ headers: {
28
+ 'Content-Type': 'application/json'
29
+ },
30
+ method: 'POST'
31
+ });
32
+ this.payload.logger.info('---- DROPPED CONTENT API SYSTEM ----');
33
+ } catch (error) {
34
+ this.payload.logger.warn(`Failed to drop content system: ${error.message}`);
35
+ }
36
+ }
37
+ let existingIds;
38
+ try {
39
+ const { data: response, error } = await this.client.GET('/api/v0/content_systems/{contentSystemId}/collections', {
40
+ params: {
41
+ path: {
42
+ contentSystemId: this.contentSystemId
43
+ }
44
+ }
45
+ });
46
+ if (error) {
47
+ throw new Error(JSON.stringify(error));
48
+ }
49
+ if (!response) {
50
+ throw new Error('No response from collections endpoint');
51
+ }
52
+ existingIds = new Set(response.data.map((c)=>c.id));
53
+ this.payload.logger.info(`Found ${existingIds.size} existing collections`);
54
+ } catch (error) {
55
+ this.payload.logger.warn(`Failed to fetch collections, will attempt to create all: ${error.message}`);
56
+ existingIds = new Set();
57
+ }
58
+ for (const collection of this.payload.config.collections){
59
+ if (!existingIds.has(collection.slug)) {
60
+ await createCollection.call(this, collection.slug);
61
+ }
62
+ }
63
+ for (const global of this.payload.config.globals || []){
64
+ const globalId = `_global-${global.slug}`;
65
+ if (!existingIds.has(globalId)) {
66
+ await createCollection.call(this, globalId);
67
+ }
68
+ }
69
+ }
70
+ async function createCollection(collectionId) {
71
+ try {
72
+ const { error } = await this.client.POST('/api/v0/content_systems/{contentSystemId}/collections', {
73
+ body: {
74
+ id: collectionId
75
+ },
76
+ params: {
77
+ path: {
78
+ contentSystemId: this.contentSystemId
79
+ }
80
+ }
81
+ });
82
+ if (error) {
83
+ throw new Error(JSON.stringify(error));
84
+ }
85
+ this.payload.logger.info(`Created collection: ${collectionId}`);
86
+ } catch (error) {
87
+ const errorMessage = error.message;
88
+ if (!errorMessage.includes('already exists') && !errorMessage.includes('409')) {
89
+ this.payload.logger.warn(`Failed to create collection ${collectionId}: ${errorMessage}`);
90
+ }
91
+ }
92
+ }
93
+ async function findMany({ collection, joins, limit, page, pagination, sort, where }) {
94
+ const collectionConfig = this.payload.config.collections.find((c)=>c.slug === collection);
95
+ const sortWithFallback = addFallbackSort(sort, collectionConfig);
96
+ const { data: response, error } = await this.client.POST('/api/v0/documents:find', {
97
+ body: {
98
+ collectionId: collection,
99
+ contentSystemId: this.contentSystemId,
100
+ join: collectionConfig ? convertPayloadJoinsToContentAPI(this.payload, collectionConfig, joins) : undefined,
101
+ limit,
102
+ page: page ?? 1,
103
+ sort: convertPayloadSortToContentAPI(sortWithFallback),
104
+ where: convertPayloadWhereToContentAPI(where ?? {})
105
+ }
106
+ });
107
+ if (error) {
108
+ throw new Error(`Content API findMany error: ${JSON.stringify(error)}`);
109
+ }
110
+ if (!response) {
111
+ throw new Error('No response from findMany');
112
+ }
113
+ return {
114
+ docs: response.result.data.map((doc)=>unwrapDocument(this.payload, doc, collection)),
115
+ ...getPaginationData(response.result.pagination, pagination)
116
+ };
117
+ }
118
+ async function find(args) {
119
+ const collectionConfig = this.payload.config.collections.find((c)=>c.slug === args.collection);
120
+ return findMany.call(this, {
121
+ collection: args.collection,
122
+ joins: args.joins,
123
+ limit: args.limit ?? 0,
124
+ page: args.page ?? 1,
125
+ pagination: args.pagination,
126
+ sort: args.sort || collectionConfig?.defaultSort,
127
+ where: args.where
128
+ });
129
+ }
130
+ // TODO: remove Omit when this PR is released: https://github.com/payloadcms/payload/pull/15183
131
+ async function findVersions(args) {
132
+ const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {
133
+ parentToDocumentId: true
134
+ });
135
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {
136
+ body: {
137
+ collectionId: args.collection,
138
+ contentSystemId: this.contentSystemId,
139
+ limit: args.limit ?? 0,
140
+ page: args.page ?? 1,
141
+ sort: convertPayloadSortToContentAPI(args.sort),
142
+ where: whereClause
143
+ }
144
+ });
145
+ if (error) {
146
+ throw new Error(`Content API findVersions error: ${JSON.stringify(error)}`);
147
+ }
148
+ if (!response) {
149
+ throw new Error('No response from findVersions');
150
+ }
151
+ const docs = response.result.data.map((doc)=>unwrapDocument(this.payload, doc, args.collection));
152
+ return {
153
+ docs,
154
+ ...getPaginationData(response.result.pagination, args.pagination)
155
+ };
156
+ }
157
+ async function queryDrafts(args) {
158
+ const versionsResult = await this.findVersions({
159
+ collection: args.collection,
160
+ limit: args.limit,
161
+ page: args.page,
162
+ pagination: args.pagination,
163
+ sort: args.sort,
164
+ where: {
165
+ ...args.where,
166
+ latest: {
167
+ equals: true
168
+ }
169
+ }
170
+ });
171
+ // queryDrafts should return documents with fields at root level, not nested in 'version'
172
+ // So we need to unwrap the version structure and merge version fields to root
173
+ const docs = versionsResult.docs.map((versionDoc)=>{
174
+ const { version, ...versionMeta } = versionDoc;
175
+ return {
176
+ ...versionMeta,
177
+ ...version,
178
+ // Keep version metadata like parent, but document fields take precedence
179
+ id: version.id
180
+ };
181
+ });
182
+ return {
183
+ ...versionsResult,
184
+ docs
185
+ };
186
+ }
187
+ async function createVersion(args) {
188
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:create', {
189
+ body: {
190
+ collectionId: args.collectionSlug,
191
+ contentSystemId: this.contentSystemId,
192
+ data: dataToContentAPI(this.payload, args.collectionSlug, args.versionData, {
193
+ applyDefaults: true
194
+ }),
195
+ documentId: String(args.parent),
196
+ latest: !args.autosave
197
+ }
198
+ });
199
+ if (error) {
200
+ throw new Error(`Content API createVersion error: ${JSON.stringify(error)}`);
201
+ }
202
+ if (!response) {
203
+ throw new Error('No response from createVersion');
204
+ }
205
+ if (!('data' in response.result)) {
206
+ throw new Error('Unexpected response format from createVersion');
207
+ }
208
+ return unwrapDocument(this.payload, response.result.data, args.collectionSlug);
209
+ }
210
+ async function updateVersion(args) {
211
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {
212
+ body: {
213
+ collectionId: args.collection,
214
+ contentSystemId: this.contentSystemId,
215
+ createOnMissing: false,
216
+ data: dataToContentAPI(this.payload, args.collection, args.versionData),
217
+ where: convertPayloadWhereToContentAPI(args.where ?? {
218
+ id: {
219
+ equals: args.id
220
+ }
221
+ })
222
+ }
223
+ });
224
+ if (error) {
225
+ throw new Error(`Content API updateVersion error: ${JSON.stringify(error)}`);
226
+ }
227
+ if (!response?.result || !('data' in response.result)) {
228
+ throw new Error('No document data in updateVersion response');
229
+ }
230
+ const doc = response.result.data[0];
231
+ if (!doc) {
232
+ return null;
233
+ }
234
+ return unwrapDocument(this.payload, doc, args.collection);
235
+ }
236
+ async function deleteVersions(args) {
237
+ if (!args.collection) {
238
+ throw new Error('deleteVersions requires a collection');
239
+ }
240
+ const { error } = await this.client.POST('/api/v0/document_versions:delete', {
241
+ body: {
242
+ collectionId: args.collection,
243
+ contentSystemId: this.contentSystemId,
244
+ where: convertPayloadWhereToContentAPI(args.where)
245
+ }
246
+ });
247
+ if (error) {
248
+ throw new Error(`Content API deleteVersions error: ${JSON.stringify(error)}`);
249
+ }
250
+ }
251
+ async function findOne(args) {
252
+ const { docs } = await this.find({
253
+ collection: args.collection,
254
+ joins: args.joins,
255
+ limit: 1,
256
+ pagination: false,
257
+ where: args.where
258
+ });
259
+ return docs[0] ?? null;
260
+ }
261
+ async function updateMany(args) {
262
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
263
+ body: {
264
+ collectionId: args.collection,
265
+ contentSystemId: this.contentSystemId,
266
+ createOnMissing: false,
267
+ data: dataToContentAPI(this.payload, args.collection, args.data),
268
+ returning: {},
269
+ where: convertPayloadWhereToContentAPI(args.where)
270
+ }
271
+ });
272
+ if (error) {
273
+ throw new Error(`Content API updateMany error: ${JSON.stringify(error)}`);
274
+ }
275
+ if (!response) {
276
+ throw new Error('No response from updateMany');
277
+ }
278
+ if (response.result && 'data' in response.result) {
279
+ return response.result.data.map((doc)=>unwrapDocument(this.payload, doc, args.collection));
280
+ }
281
+ return null;
282
+ }
283
+ async function updateOne(args) {
284
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
285
+ body: {
286
+ collectionId: args.collection,
287
+ contentSystemId: this.contentSystemId,
288
+ createOnMissing: false,
289
+ data: dataToContentAPI(this.payload, args.collection, args.data),
290
+ returning: {},
291
+ where: convertPayloadWhereToContentAPI(args.where ?? {
292
+ id: {
293
+ equals: args.id
294
+ }
295
+ })
296
+ }
297
+ });
298
+ if (error) {
299
+ throw new Error(`Content API updateOne error: ${JSON.stringify(error)}`);
300
+ }
301
+ if (!response) {
302
+ throw new Error('No response from updateOne');
303
+ }
304
+ if (!response.result || !('data' in response.result)) {
305
+ throw new Error('Unexpected response format from updateOne');
306
+ }
307
+ const doc = response.result.data[0];
308
+ if (!doc) {
309
+ return null;
310
+ }
311
+ return unwrapDocument(this.payload, doc, args.collection);
312
+ }
313
+ async function deleteMany(args) {
314
+ const { error } = await this.client.POST('/api/v0/documents:delete', {
315
+ body: {
316
+ collectionId: args.collection,
317
+ contentSystemId: this.contentSystemId,
318
+ where: convertPayloadWhereToContentAPI(args.where)
319
+ }
320
+ });
321
+ if (error) {
322
+ throw new Error(`Content API deleteMany error: ${JSON.stringify(error)}`);
323
+ }
324
+ }
325
+ async function deleteOne(args) {
326
+ const { data: response, error } = await this.client.POST('/api/v0/documents:delete', {
327
+ body: {
328
+ collectionId: args.collection,
329
+ contentSystemId: this.contentSystemId,
330
+ returning: {},
331
+ where: convertPayloadWhereToContentAPI(args.where)
332
+ }
333
+ });
334
+ if (error) {
335
+ throw new Error(`Content API deleteOne error: ${JSON.stringify(error)}`);
336
+ }
337
+ if (!response?.result || !('data' in response.result)) {
338
+ throw new Error('No document data in deleteOne response');
339
+ }
340
+ const doc = response.result.data[0];
341
+ if (!doc) {
342
+ return null;
343
+ }
344
+ return unwrapDocument(this.payload, doc, args.collection);
345
+ }
346
+ async function create(args) {
347
+ const id = args.data.id || uuid();
348
+ const { data: response, error } = await this.client.POST('/api/v0/documents:create', {
349
+ body: {
350
+ id: String(id),
351
+ collectionId: args.collection,
352
+ contentSystemId: this.contentSystemId,
353
+ data: dataToContentAPI(this.payload, args.collection, args.data, {
354
+ applyDefaults: true
355
+ })
356
+ }
357
+ });
358
+ if (error) {
359
+ throw new Error(`Content API create error: ${JSON.stringify(error)}`);
360
+ }
361
+ if (!response) {
362
+ throw new Error('No response from create');
363
+ }
364
+ if (!('data' in response.result)) {
365
+ throw new Error('Unexpected response format from create');
366
+ }
367
+ return unwrapDocument(this.payload, response.result.data, args.collection);
368
+ }
369
+ async function count(args) {
370
+ const { data: response, error } = await this.client.POST('/api/v0/documents:count', {
371
+ body: {
372
+ collectionId: args.collection,
373
+ contentSystemId: this.contentSystemId,
374
+ where: convertPayloadWhereToContentAPI(args.where)
375
+ }
376
+ });
377
+ if (error) {
378
+ throw new Error(`Content API count error: ${JSON.stringify(error)}`);
379
+ }
380
+ if (!response) {
381
+ throw new Error('No response from count');
382
+ }
383
+ return {
384
+ totalDocs: response.result.count
385
+ };
386
+ }
387
+ async function countVersions(args) {
388
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:count', {
389
+ body: {
390
+ collectionId: args.collection,
391
+ contentSystemId: this.contentSystemId,
392
+ where: convertPayloadWhereToContentAPI(args.where)
393
+ }
394
+ });
395
+ if (error) {
396
+ throw new Error(`Content API countVersions error: ${JSON.stringify(error)}`);
397
+ }
398
+ if (!response) {
399
+ throw new Error('No response from countVersions');
400
+ }
401
+ return {
402
+ totalDocs: response.result.count
403
+ };
404
+ }
405
+ async function upsert(args) {
406
+ let documentId = args.data.id;
407
+ if (!documentId && args.where && 'id' in args.where) {
408
+ const idClause = args.where.id;
409
+ if (idClause && 'equals' in idClause) {
410
+ documentId = idClause.equals;
411
+ }
412
+ }
413
+ if (!documentId) {
414
+ documentId = uuid();
415
+ }
416
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
417
+ body: {
418
+ collectionId: args.collection,
419
+ contentSystemId: this.contentSystemId,
420
+ createOnMissing: {
421
+ id: documentId
422
+ },
423
+ data: dataToContentAPI(this.payload, args.collection, args.data, {
424
+ applyDefaults: true
425
+ }),
426
+ where: convertPayloadWhereToContentAPI(args.where)
427
+ }
428
+ });
429
+ if (error) {
430
+ throw new Error(`Content API upsert error: ${JSON.stringify(error)}`);
431
+ }
432
+ if (!response) {
433
+ throw new Error('No response from upsert');
434
+ }
435
+ if (!response.result || !('data' in response.result)) {
436
+ throw new Error('Unexpected response format from upsert');
437
+ }
438
+ const doc = response.result.data[0];
439
+ if (!doc) {
440
+ throw new Error('No document data in upsert response');
441
+ }
442
+ return unwrapDocument(this.payload, doc, args.collection);
443
+ }
444
+ function createGlobal(args) {
445
+ return this.create({
446
+ collection: getGlobalSlug(args.slug),
447
+ data: {
448
+ ...args.data,
449
+ globalType: args.slug
450
+ }
451
+ });
452
+ }
453
+ function findGlobal(args) {
454
+ return this.findOne({
455
+ collection: getGlobalSlug(args.slug),
456
+ where: args.where ?? {}
457
+ });
458
+ }
459
+ async function updateGlobal(args) {
460
+ // Use upsert to ensure the global exists
461
+ // Use slug as the consistent document ID for globals
462
+ return this.upsert({
463
+ collection: getGlobalSlug(args.slug),
464
+ data: args.data,
465
+ where: {
466
+ id: {
467
+ equals: args.slug
468
+ }
469
+ }
470
+ });
471
+ }
472
+ // TODO: remove Omit when this PR is released: https://github.com/payloadcms/payload/pull/15183
473
+ function findGlobalVersions(args) {
474
+ return this.findVersions({
475
+ collection: getGlobalSlug(args.global),
476
+ limit: args.limit,
477
+ page: args.page,
478
+ pagination: args.pagination,
479
+ sort: args.sort,
480
+ where: args.where
481
+ });
482
+ }
483
+ function createGlobalVersion(args) {
484
+ // For globals, use the globalSlug as the consistent document ID
485
+ // This matches what we do in updateGlobal
486
+ return this.createVersion({
487
+ autosave: args.autosave,
488
+ collectionSlug: getGlobalSlug(args.globalSlug),
489
+ createdAt: args.createdAt,
490
+ parent: args.globalSlug,
491
+ updatedAt: args.updatedAt,
492
+ versionData: args.versionData
493
+ });
494
+ }
495
+ function updateGlobalVersion(args) {
496
+ // UpdateVersion requires either id OR where, not both
497
+ if (args.id !== undefined) {
498
+ return this.updateVersion({
499
+ id: args.id,
500
+ collection: getGlobalSlug(args.global),
501
+ versionData: args.versionData
502
+ });
503
+ }
504
+ // args.where is guaranteed by Payload when args.id is undefined
505
+ return this.updateVersion({
506
+ collection: getGlobalSlug(args.global),
507
+ versionData: args.versionData,
508
+ where: args.where
509
+ });
510
+ }
511
+ function countGlobalVersions(args) {
512
+ return this.countVersions({
513
+ collection: getGlobalSlug(args.global),
514
+ where: args.where
515
+ });
516
+ }
517
+ export const contentAPIAdapter = (opts)=>({
518
+ name: 'content_api',
519
+ defaultIDType: 'text',
520
+ init: ({ payload })=>{
521
+ const client = createClient({
522
+ baseUrl: opts.url
523
+ });
524
+ const middlewareOpts = {
525
+ auth: opts.auth,
526
+ contentSystemId: opts.contentSystemId,
527
+ logger: payload.logger,
528
+ url: opts.url
529
+ };
530
+ client.use(createAuthMiddleware(middlewareOpts));
531
+ client.use(createErrorMiddleware(middlewareOpts));
532
+ return createDatabaseAdapter({
533
+ name: 'content_api',
534
+ auth: opts.auth,
535
+ beginTransaction: ()=>Promise.resolve('no-op-transaction'),
536
+ client,
537
+ commitTransaction: async ()=>{},
538
+ contentSystemId: opts.contentSystemId,
539
+ count: count,
540
+ countGlobalVersions: countGlobalVersions,
541
+ countVersions: countVersions,
542
+ create: create,
543
+ createGlobal: createGlobal,
544
+ createGlobalVersion: createGlobalVersion,
545
+ createVersion: createVersion,
546
+ defaultIDType: 'text',
547
+ deleteMany: deleteMany,
548
+ deleteOne: deleteOne,
549
+ deleteVersions: deleteVersions,
550
+ find: find,
551
+ findDistinct: ()=>Promise.reject(new Error('findDistinct is not yet implemented for Content API adapter')),
552
+ findGlobal: findGlobal,
553
+ findGlobalVersions: findGlobalVersions,
554
+ findOne: findOne,
555
+ findVersions: findVersions,
556
+ init,
557
+ packageName: '@payloadcms/db-content-api',
558
+ payload,
559
+ queryDrafts: queryDrafts,
560
+ rollbackTransaction: async ()=>{},
561
+ updateGlobal: updateGlobal,
562
+ updateGlobalVersion: updateGlobalVersion,
563
+ updateMany: updateMany,
564
+ updateOne: updateOne,
565
+ updateVersion: updateVersion,
566
+ upsert: upsert,
567
+ url: opts.url
568
+ });
569
+ }
570
+ });
571
+
572
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/db-content-api/index.ts"],"sourcesContent":["import type {\n BaseDatabaseAdapter,\n Count,\n CountArgs,\n CountGlobalVersionArgs,\n CountGlobalVersions,\n CountVersions,\n Create,\n CreateArgs,\n CreateGlobal,\n CreateGlobalArgs,\n CreateGlobalVersion,\n CreateGlobalVersionArgs,\n CreateVersion,\n CreateVersionArgs,\n DatabaseAdapterObj,\n DeleteMany,\n DeleteManyArgs,\n DeleteOne,\n DeleteOneArgs,\n DeleteVersions,\n DeleteVersionsArgs,\n Find,\n FindArgs,\n FindGlobal,\n FindGlobalArgs,\n FindGlobalVersions,\n FindGlobalVersionsArgs,\n FindOne,\n FindOneArgs,\n FindVersions,\n FindVersionsArgs,\n QueryDrafts,\n QueryDraftsArgs,\n UpdateGlobal,\n UpdateGlobalArgs,\n UpdateGlobalVersion,\n UpdateGlobalVersionArgs,\n UpdateMany,\n UpdateManyArgs,\n UpdateOne,\n UpdateOneArgs,\n UpdateVersion,\n UpdateVersionArgs,\n Upsert,\n UpsertArgs,\n} from 'payload'\n\nimport createClient from 'openapi-fetch'\nimport { createDatabaseAdapter } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { paths } from './generated/content-api-types.js'\n\nimport { getPaginationData } from './temp-utilities/pagination.js'\nimport { getGlobalSlug } from './temp-utilities/slug.js'\nimport { addFallbackSort, convertPayloadSortToContentAPI } from './temp-utilities/sorting.js'\nimport { unwrapDocument } from './temp-utilities/unwrapDocument.js'\nimport { type AuthMode, createAuthMiddleware, createErrorMiddleware } from './utilities/auth.js'\nimport { dataToContentAPI } from './utilities/data/index.js'\nimport { convertPayloadJoinsToContentAPI } from './utilities/joins.js'\nimport { convertPayloadWhereToContentAPI } from './utilities/where.js'\n\ntype ContentAPIOptions = {\n auth: AuthMode\n contentSystemId: string\n url: string\n}\n\nexport type ContentAPIAdapter = {\n auth: AuthMode\n client: ReturnType<typeof createClient<paths>>\n contentSystemId: string\n url: string\n} & BaseDatabaseAdapter\n\nasync function init(this: ContentAPIAdapter) {\n if (this.auth.mode === 'apiKey') {\n this.payload.logger.info('Using API Key authentication')\n } else if (this.auth.mode === 'tokenStore') {\n this.payload.logger.info('Using TokenStore authentication (local dev)')\n } else {\n this.payload.logger.info('Using Dev JWT authentication (testing)')\n }\n\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info(`---- DROPPING CONTENT API SYSTEM (${this.contentSystemId}) ----`)\n try {\n await fetch(`${this.url}/dev/clear-db`, {\n body: JSON.stringify({ contentSystemId: this.contentSystemId }),\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n })\n this.payload.logger.info('---- DROPPED CONTENT API SYSTEM ----')\n } catch (error) {\n this.payload.logger.warn(`Failed to drop content system: ${(error as Error).message}`)\n }\n }\n\n let existingIds: Set<string>\n try {\n const { data: response, error } = await this.client.GET(\n '/api/v0/content_systems/{contentSystemId}/collections',\n {\n params: { path: { contentSystemId: this.contentSystemId } },\n },\n )\n\n if (error) {\n throw new Error(JSON.stringify(error))\n }\n if (!response) {\n throw new Error('No response from collections endpoint')\n }\n\n existingIds = new Set(response.data.map((c) => c.id))\n this.payload.logger.info(`Found ${existingIds.size} existing collections`)\n } catch (error) {\n this.payload.logger.warn(\n `Failed to fetch collections, will attempt to create all: ${(error as Error).message}`,\n )\n existingIds = new Set()\n }\n\n for (const collection of this.payload.config.collections) {\n if (!existingIds.has(collection.slug)) {\n await createCollection.call(this, collection.slug)\n }\n }\n\n for (const global of this.payload.config.globals || []) {\n const globalId = `_global-${global.slug}`\n if (!existingIds.has(globalId)) {\n await createCollection.call(this, globalId)\n }\n }\n}\n\nasync function createCollection(this: ContentAPIAdapter, collectionId: string) {\n try {\n const { error } = await this.client.POST(\n '/api/v0/content_systems/{contentSystemId}/collections',\n {\n body: { id: collectionId },\n params: { path: { contentSystemId: this.contentSystemId } },\n },\n )\n\n if (error) {\n throw new Error(JSON.stringify(error))\n }\n this.payload.logger.info(`Created collection: ${collectionId}`)\n } catch (error) {\n const errorMessage = (error as Error).message\n if (!errorMessage.includes('already exists') && !errorMessage.includes('409')) {\n this.payload.logger.warn(`Failed to create collection ${collectionId}: ${errorMessage}`)\n }\n }\n}\n\nasync function findMany(\n this: ContentAPIAdapter,\n {\n collection,\n joins,\n limit,\n page,\n pagination,\n sort,\n where,\n // Not yet passed to Content API:\n // - select: supported by Content API, pass-through possible\n // Not supported by Content API:\n // - draftsEnabled, locale, versions, projection\n }: Pick<FindArgs, 'joins' | 'pagination' | 'sort' | 'where'> &\n Required<Pick<FindArgs, 'collection' | 'limit' | 'page'>>,\n) {\n const collectionConfig = this.payload.config.collections.find((c) => c.slug === collection)\n const sortWithFallback = addFallbackSort(sort, collectionConfig)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:find', {\n body: {\n collectionId: collection,\n contentSystemId: this.contentSystemId,\n join: collectionConfig\n ? convertPayloadJoinsToContentAPI(this.payload, collectionConfig, joins)\n : undefined,\n limit,\n page: page ?? 1,\n sort: convertPayloadSortToContentAPI(sortWithFallback),\n where: convertPayloadWhereToContentAPI(where ?? {}),\n },\n })\n\n if (error) {\n throw new Error(`Content API findMany error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from findMany')\n }\n\n return {\n docs: response.result.data.map((doc) => unwrapDocument(this.payload, doc, collection)),\n ...getPaginationData(response.result.pagination, pagination),\n }\n}\n\nasync function find(this: ContentAPIAdapter, args: FindArgs) {\n const collectionConfig = this.payload.config.collections.find((c) => c.slug === args.collection)\n return findMany.call(this, {\n collection: args.collection,\n joins: args.joins,\n limit: args.limit ?? 0,\n page: args.page ?? 1,\n pagination: args.pagination,\n sort: args.sort || collectionConfig?.defaultSort,\n where: args.where,\n })\n}\n\n// TODO: remove Omit when this PR is released: https://github.com/payloadcms/payload/pull/15183\nasync function findVersions(this: ContentAPIAdapter, args: Omit<FindVersionsArgs, 'skip'>) {\n const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {\n parentToDocumentId: true,\n })\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n limit: args.limit ?? 0,\n page: args.page ?? 1,\n sort: convertPayloadSortToContentAPI(args.sort),\n where: whereClause,\n },\n })\n\n if (error) {\n throw new Error(`Content API findVersions error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from findVersions')\n }\n\n const docs = response.result.data.map((doc) => unwrapDocument(this.payload, doc, args.collection))\n\n return {\n docs,\n ...getPaginationData(response.result.pagination, args.pagination),\n }\n}\n\nasync function queryDrafts(this: ContentAPIAdapter, args: QueryDraftsArgs) {\n const versionsResult = await this.findVersions({\n collection: args.collection,\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n sort: args.sort,\n where: { ...args.where, latest: { equals: true } },\n })\n\n // queryDrafts should return documents with fields at root level, not nested in 'version'\n // So we need to unwrap the version structure and merge version fields to root\n const docs = versionsResult.docs.map((versionDoc) => {\n const { version, ...versionMeta } = versionDoc as any\n return {\n ...versionMeta,\n ...version,\n // Keep version metadata like parent, but document fields take precedence\n id: version.id, // Document ID, not version ID\n }\n })\n\n return {\n ...versionsResult,\n docs,\n }\n}\n\nasync function createVersion(this: ContentAPIAdapter, args: CreateVersionArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:create', {\n body: {\n collectionId: args.collectionSlug,\n contentSystemId: this.contentSystemId,\n data: dataToContentAPI(this.payload, args.collectionSlug, args.versionData, {\n applyDefaults: true,\n }),\n documentId: String(args.parent),\n latest: !args.autosave,\n },\n })\n\n if (error) {\n throw new Error(`Content API createVersion error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from createVersion')\n }\n if (!('data' in response.result)) {\n throw new Error('Unexpected response format from createVersion')\n }\n\n return unwrapDocument(this.payload, response.result.data, args.collectionSlug)\n}\n\nasync function updateVersion(this: ContentAPIAdapter, args: UpdateVersionArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n data: dataToContentAPI(this.payload, args.collection, args.versionData),\n where: convertPayloadWhereToContentAPI(args.where ?? { id: { equals: args.id } }),\n },\n })\n\n if (error) {\n throw new Error(`Content API updateVersion error: ${JSON.stringify(error)}`)\n }\n if (!response?.result || !('data' in response.result)) {\n throw new Error('No document data in updateVersion response')\n }\n\n const doc = response.result.data[0]\n if (!doc) {\n return null\n }\n\n return unwrapDocument(this.payload, doc, args.collection)\n}\n\nasync function deleteVersions(this: ContentAPIAdapter, args: DeleteVersionsArgs) {\n if (!args.collection) {\n throw new Error('deleteVersions requires a collection')\n }\n\n const { error } = await this.client.POST('/api/v0/document_versions:delete', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API deleteVersions error: ${JSON.stringify(error)}`)\n }\n}\n\nasync function findOne(this: ContentAPIAdapter, args: FindOneArgs) {\n const { docs } = await this.find({\n collection: args.collection,\n joins: args.joins,\n limit: 1,\n pagination: false,\n where: args.where,\n })\n return docs[0] ?? null\n}\n\nasync function updateMany(this: ContentAPIAdapter, args: UpdateManyArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n data: dataToContentAPI(this.payload, args.collection, args.data),\n returning: {},\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API updateMany error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from updateMany')\n }\n\n if (response.result && 'data' in response.result) {\n return response.result.data.map((doc) => unwrapDocument(this.payload, doc, args.collection))\n }\n return null\n}\n\nasync function updateOne(this: ContentAPIAdapter, args: UpdateOneArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n data: dataToContentAPI(this.payload, args.collection, args.data),\n returning: {},\n where: convertPayloadWhereToContentAPI(args.where ?? { id: { equals: args.id } }),\n },\n })\n\n if (error) {\n throw new Error(`Content API updateOne error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from updateOne')\n }\n if (!response.result || !('data' in response.result)) {\n throw new Error('Unexpected response format from updateOne')\n }\n\n const doc = response.result.data[0]\n if (!doc) {\n return null\n }\n\n return unwrapDocument(this.payload, doc, args.collection)\n}\n\nasync function deleteMany(this: ContentAPIAdapter, args: DeleteManyArgs) {\n const { error } = await this.client.POST('/api/v0/documents:delete', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API deleteMany error: ${JSON.stringify(error)}`)\n }\n}\n\nasync function deleteOne(this: ContentAPIAdapter, args: DeleteOneArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/documents:delete', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n returning: {}, // Request deleted document back\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API deleteOne error: ${JSON.stringify(error)}`)\n }\n if (!response?.result || !('data' in response.result)) {\n throw new Error('No document data in deleteOne response')\n }\n\n const doc = response.result.data[0]\n if (!doc) {\n return null\n }\n\n return unwrapDocument(this.payload, doc, args.collection)\n}\n\nasync function create(this: ContentAPIAdapter, args: CreateArgs) {\n const id = (args.data.id as string | undefined) || uuid()\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:create', {\n body: {\n id: String(id),\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n data: dataToContentAPI(this.payload, args.collection, args.data, { applyDefaults: true }),\n },\n })\n\n if (error) {\n throw new Error(`Content API create error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from create')\n }\n if (!('data' in response.result)) {\n throw new Error('Unexpected response format from create')\n }\n\n return unwrapDocument(this.payload, response.result.data, args.collection)\n}\n\nasync function count(this: ContentAPIAdapter, args: CountArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/documents:count', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API count error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from count')\n }\n\n return { totalDocs: response.result.count }\n}\n\nasync function countVersions(this: ContentAPIAdapter, args: CountArgs) {\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:count', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API countVersions error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from countVersions')\n }\n\n return { totalDocs: response.result.count }\n}\n\nasync function upsert(this: ContentAPIAdapter, args: UpsertArgs) {\n let documentId = args.data.id as string | undefined\n if (!documentId && args.where && 'id' in args.where) {\n const idClause = (args.where as Record<string, unknown>).id as Record<string, unknown>\n if (idClause && 'equals' in idClause) {\n documentId = idClause.equals as string\n }\n }\n if (!documentId) {\n documentId = uuid()\n }\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collectionId: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: { id: documentId },\n data: dataToContentAPI(this.payload, args.collection, args.data, { applyDefaults: true }),\n where: convertPayloadWhereToContentAPI(args.where),\n },\n })\n\n if (error) {\n throw new Error(`Content API upsert error: ${JSON.stringify(error)}`)\n }\n if (!response) {\n throw new Error('No response from upsert')\n }\n if (!response.result || !('data' in response.result)) {\n throw new Error('Unexpected response format from upsert')\n }\n\n const doc = response.result.data[0]\n if (!doc) {\n throw new Error('No document data in upsert response')\n }\n\n return unwrapDocument(this.payload, doc, args.collection)\n}\n\nfunction createGlobal(this: ContentAPIAdapter, args: CreateGlobalArgs) {\n return this.create({\n collection: getGlobalSlug(args.slug),\n data: { ...args.data, globalType: args.slug },\n })\n}\n\nfunction findGlobal(this: ContentAPIAdapter, args: FindGlobalArgs) {\n return this.findOne({ collection: getGlobalSlug(args.slug), where: args.where ?? {} })\n}\n\nasync function updateGlobal(this: ContentAPIAdapter, args: UpdateGlobalArgs) {\n // Use upsert to ensure the global exists\n // Use slug as the consistent document ID for globals\n return this.upsert({\n collection: getGlobalSlug(args.slug),\n data: args.data,\n where: { id: { equals: args.slug } },\n })\n}\n\n// TODO: remove Omit when this PR is released: https://github.com/payloadcms/payload/pull/15183\nfunction findGlobalVersions(this: ContentAPIAdapter, args: Omit<FindGlobalVersionsArgs, 'skip'>) {\n return this.findVersions({\n collection: getGlobalSlug(args.global),\n limit: args.limit,\n page: args.page,\n pagination: args.pagination,\n sort: args.sort,\n where: args.where,\n })\n}\n\nfunction createGlobalVersion(this: ContentAPIAdapter, args: CreateGlobalVersionArgs) {\n // For globals, use the globalSlug as the consistent document ID\n // This matches what we do in updateGlobal\n return this.createVersion({\n autosave: args.autosave,\n collectionSlug: getGlobalSlug(args.globalSlug),\n createdAt: args.createdAt,\n parent: args.globalSlug,\n updatedAt: args.updatedAt,\n versionData: args.versionData,\n })\n}\n\nfunction updateGlobalVersion(this: ContentAPIAdapter, args: UpdateGlobalVersionArgs) {\n // UpdateVersion requires either id OR where, not both\n if (args.id !== undefined) {\n return this.updateVersion({\n id: args.id,\n collection: getGlobalSlug(args.global),\n versionData: args.versionData,\n })\n }\n // args.where is guaranteed by Payload when args.id is undefined\n return this.updateVersion({\n collection: getGlobalSlug(args.global),\n versionData: args.versionData,\n where: args.where,\n })\n}\n\nfunction countGlobalVersions(this: ContentAPIAdapter, args: CountGlobalVersionArgs) {\n return this.countVersions({ collection: getGlobalSlug(args.global), where: args.where })\n}\n\nexport const contentAPIAdapter = (opts: ContentAPIOptions): DatabaseAdapterObj => ({\n name: 'content_api',\n defaultIDType: 'text',\n init: ({ payload }) => {\n const client = createClient<paths>({ baseUrl: opts.url })\n\n const middlewareOpts = {\n auth: opts.auth,\n contentSystemId: opts.contentSystemId,\n logger: payload.logger,\n url: opts.url,\n }\n\n client.use(createAuthMiddleware(middlewareOpts))\n client.use(createErrorMiddleware(middlewareOpts))\n\n return createDatabaseAdapter<ContentAPIAdapter>({\n name: 'content_api',\n auth: opts.auth,\n beginTransaction: () => Promise.resolve('no-op-transaction'),\n client,\n commitTransaction: async () => {},\n contentSystemId: opts.contentSystemId,\n count: count as Count,\n countGlobalVersions: countGlobalVersions as CountGlobalVersions,\n countVersions: countVersions as CountVersions,\n create: create as Create,\n createGlobal: createGlobal as CreateGlobal,\n createGlobalVersion: createGlobalVersion as CreateGlobalVersion,\n createVersion: createVersion as CreateVersion,\n defaultIDType: 'text',\n deleteMany: deleteMany as DeleteMany,\n deleteOne: deleteOne as DeleteOne,\n deleteVersions: deleteVersions as DeleteVersions,\n find: find as Find,\n findDistinct: () =>\n Promise.reject(new Error('findDistinct is not yet implemented for Content API adapter')),\n findGlobal: findGlobal as FindGlobal,\n findGlobalVersions: findGlobalVersions as FindGlobalVersions,\n findOne: findOne as FindOne,\n findVersions: findVersions as FindVersions,\n init,\n packageName: '@payloadcms/db-content-api',\n payload,\n queryDrafts: queryDrafts as QueryDrafts,\n rollbackTransaction: async () => {},\n updateGlobal: updateGlobal as UpdateGlobal,\n updateGlobalVersion: updateGlobalVersion as UpdateGlobalVersion,\n updateMany: updateMany as UpdateMany,\n updateOne: updateOne as UpdateOne,\n updateVersion: updateVersion as UpdateVersion,\n upsert: upsert as Upsert,\n url: opts.url,\n })\n },\n})\n"],"names":["createClient","createDatabaseAdapter","v4","uuid","getPaginationData","getGlobalSlug","addFallbackSort","convertPayloadSortToContentAPI","unwrapDocument","createAuthMiddleware","createErrorMiddleware","dataToContentAPI","convertPayloadJoinsToContentAPI","convertPayloadWhereToContentAPI","init","auth","mode","payload","logger","info","process","env","PAYLOAD_DROP_DATABASE","contentSystemId","fetch","url","body","JSON","stringify","headers","method","error","warn","message","existingIds","data","response","client","GET","params","path","Error","Set","map","c","id","size","collection","config","collections","has","slug","createCollection","call","global","globals","globalId","collectionId","POST","errorMessage","includes","findMany","joins","limit","page","pagination","sort","where","collectionConfig","find","sortWithFallback","join","undefined","docs","result","doc","args","defaultSort","findVersions","whereClause","parentToDocumentId","queryDrafts","versionsResult","latest","equals","versionDoc","version","versionMeta","createVersion","collectionSlug","versionData","applyDefaults","documentId","String","parent","autosave","updateVersion","createOnMissing","deleteVersions","findOne","updateMany","returning","updateOne","deleteMany","deleteOne","create","count","totalDocs","countVersions","upsert","idClause","createGlobal","globalType","findGlobal","updateGlobal","findGlobalVersions","createGlobalVersion","globalSlug","createdAt","updatedAt","updateGlobalVersion","countGlobalVersions","contentAPIAdapter","opts","name","defaultIDType","baseUrl","middlewareOpts","use","beginTransaction","Promise","resolve","commitTransaction","findDistinct","reject","packageName","rollbackTransaction"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { components } from '../generated/content-api-types.js';
2
+ export declare const getPaginationData: (contentAPIPagination: components["schemas"]["Pagination"], pagination?: boolean) => {
3
+ hasNextPage: boolean;
4
+ hasPrevPage: boolean;
5
+ limit: number;
6
+ nextPage: number | null;
7
+ page: number;
8
+ pagingCounter: number;
9
+ prevPage: number | null;
10
+ totalDocs: number;
11
+ totalPages: number;
12
+ };
13
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/db-content-api/temp-utilities/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AA6BnE,eAAO,MAAM,iBAAiB,yBACN,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,eAC5C,OAAO;;;;;;;;;;CAiBrB,CAAA"}