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

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 (209) 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 +551 -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 +45 -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.d.ts +24 -0
  77. package/dist/db-content-api/utilities/data.d.ts.map +1 -0
  78. package/dist/db-content-api/utilities/data.js +118 -0
  79. package/dist/db-content-api/utilities/data.js.map +1 -0
  80. package/dist/db-content-api/utilities/joins.d.ts +55 -0
  81. package/dist/db-content-api/utilities/joins.d.ts.map +1 -0
  82. package/dist/db-content-api/utilities/joins.js +130 -0
  83. package/dist/db-content-api/utilities/joins.js.map +1 -0
  84. package/dist/db-content-api/utilities/where.d.ts +12 -0
  85. package/dist/db-content-api/utilities/where.d.ts.map +1 -0
  86. package/dist/db-content-api/utilities/where.js +63 -0
  87. package/dist/db-content-api/utilities/where.js.map +1 -0
  88. package/dist/endpoints/health.d.ts +3 -0
  89. package/dist/endpoints/health.d.ts.map +1 -0
  90. package/dist/endpoints/health.js +11 -0
  91. package/dist/endpoints/health.js.map +1 -0
  92. package/dist/exports/client.d.ts +3 -0
  93. package/dist/exports/client.d.ts.map +1 -0
  94. package/dist/exports/client.js +4 -0
  95. package/dist/exports/client.js.map +1 -0
  96. package/dist/index.d.ts +2 -1
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +3 -1
  99. package/dist/index.js.map +1 -1
  100. package/dist/oauth/components/LoginButton/index.d.ts.map +1 -1
  101. package/dist/oauth/components/LoginButton/index.js +50 -6
  102. package/dist/oauth/components/LoginButton/index.js.map +1 -1
  103. package/dist/oauth/components/LoginButton/index.scss +50 -3
  104. package/dist/oauth/components/LogoutButton/index.d.ts.map +1 -1
  105. package/dist/oauth/components/LogoutButton/index.js +0 -1
  106. package/dist/oauth/components/LogoutButton/index.js.map +1 -1
  107. package/dist/oauth/defaults.d.ts.map +1 -1
  108. package/dist/oauth/defaults.js +29 -5
  109. package/dist/oauth/defaults.js.map +1 -1
  110. package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -1
  111. package/dist/oauth/endpoints/getLoginEndpoint.js +1 -1
  112. package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -1
  113. package/dist/oauth/index.d.ts.map +1 -1
  114. package/dist/oauth/index.js +42 -6
  115. package/dist/oauth/index.js.map +1 -1
  116. package/dist/oauth/strategy/index.d.ts.map +1 -1
  117. package/dist/oauth/strategy/index.js +6 -2
  118. package/dist/oauth/strategy/index.js.map +1 -1
  119. package/dist/oauth/types.d.ts +6 -6
  120. package/dist/oauth/types.d.ts.map +1 -1
  121. package/dist/oauth/types.js.map +1 -1
  122. package/dist/oauth/utilities/createCookieOptions.d.ts.map +1 -1
  123. package/dist/oauth/utilities/createCookieOptions.js.map +1 -1
  124. package/dist/oauth/utilities/isDuplicateKeyError.d.ts +7 -0
  125. package/dist/oauth/utilities/isDuplicateKeyError.d.ts.map +1 -0
  126. package/dist/oauth/utilities/isDuplicateKeyError.js +14 -0
  127. package/dist/oauth/utilities/isDuplicateKeyError.js.map +1 -0
  128. package/dist/oauth/utilities/refreshTokens.d.ts.map +1 -1
  129. package/dist/oauth/utilities/refreshTokens.js +1 -1
  130. package/dist/oauth/utilities/refreshTokens.js.map +1 -1
  131. package/dist/plugin/build-config.d.ts +21 -4
  132. package/dist/plugin/build-config.d.ts.map +1 -1
  133. package/dist/plugin/build-config.js +89 -9
  134. package/dist/plugin/build-config.js.map +1 -1
  135. package/dist/storage-content-api/api-types.d.ts +161 -0
  136. package/dist/storage-content-api/api-types.d.ts.map +1 -0
  137. package/dist/storage-content-api/api-types.js +6 -0
  138. package/dist/storage-content-api/api-types.js.map +1 -0
  139. package/dist/storage-content-api/client.d.ts +6 -0
  140. package/dist/storage-content-api/client.d.ts.map +1 -0
  141. package/dist/storage-content-api/client.js +36 -0
  142. package/dist/storage-content-api/client.js.map +1 -0
  143. package/dist/storage-content-api/generateURL.d.ts +7 -0
  144. package/dist/storage-content-api/generateURL.d.ts.map +1 -0
  145. package/dist/storage-content-api/generateURL.js +7 -0
  146. package/dist/storage-content-api/generateURL.js.map +1 -0
  147. package/dist/storage-content-api/handleDelete.d.ts +8 -0
  148. package/dist/storage-content-api/handleDelete.d.ts.map +1 -0
  149. package/dist/storage-content-api/handleDelete.js +15 -0
  150. package/dist/storage-content-api/handleDelete.js.map +1 -0
  151. package/dist/storage-content-api/handleUpload.d.ts +11 -0
  152. package/dist/storage-content-api/handleUpload.d.ts.map +1 -0
  153. package/dist/storage-content-api/handleUpload.js +126 -0
  154. package/dist/storage-content-api/handleUpload.js.map +1 -0
  155. package/dist/storage-content-api/index.d.ts +5 -0
  156. package/dist/storage-content-api/index.d.ts.map +1 -0
  157. package/dist/storage-content-api/index.js +31 -0
  158. package/dist/storage-content-api/index.js.map +1 -0
  159. package/dist/storage-content-api/staticHandler.d.ts +10 -0
  160. package/dist/storage-content-api/staticHandler.d.ts.map +1 -0
  161. package/dist/storage-content-api/staticHandler.js +35 -0
  162. package/dist/storage-content-api/staticHandler.js.map +1 -0
  163. package/dist/storage-content-api/types.d.ts +10 -0
  164. package/dist/storage-content-api/types.d.ts.map +1 -0
  165. package/dist/storage-content-api/types.js +3 -0
  166. package/dist/storage-content-api/types.js.map +1 -0
  167. package/dist/templates/README.md +19 -0
  168. package/dist/utils/env-management.d.ts +9 -8
  169. package/dist/utils/env-management.d.ts.map +1 -1
  170. package/dist/utils/env-management.js +73 -74
  171. package/dist/utils/env-management.js.map +1 -1
  172. package/dist/utils/formatter.d.ts.map +1 -1
  173. package/dist/utils/formatter.js +1 -7
  174. package/dist/utils/formatter.js.map +1 -1
  175. package/dist/utils/lambda-config.d.ts.map +1 -1
  176. package/dist/utils/lambda-config.js +1 -0
  177. package/dist/utils/lambda-config.js.map +1 -1
  178. package/dist/utils/messages.d.ts.map +1 -1
  179. package/dist/utils/messages.js +5 -7
  180. package/dist/utils/messages.js.map +1 -1
  181. package/dist/utils/payload-config-ast.d.ts +22 -3
  182. package/dist/utils/payload-config-ast.d.ts.map +1 -1
  183. package/dist/utils/payload-config-ast.js +89 -31
  184. package/dist/utils/payload-config-ast.js.map +1 -1
  185. package/dist/utils/payload-config-finder.d.ts +2 -2
  186. package/dist/utils/payload-config-finder.d.ts.map +1 -1
  187. package/dist/utils/payload-config-finder.js +48 -9
  188. package/dist/utils/payload-config-finder.js.map +1 -1
  189. package/dist/utils/payload-config-modifier.d.ts.map +1 -1
  190. package/dist/utils/payload-config-modifier.js +33 -4
  191. package/dist/utils/payload-config-modifier.js.map +1 -1
  192. package/dist/utils/payload-package-check.d.ts +5 -0
  193. package/dist/utils/payload-package-check.d.ts.map +1 -1
  194. package/dist/utils/payload-package-check.js +48 -4
  195. package/dist/utils/payload-package-check.js.map +1 -1
  196. package/dist/utils/project.d.ts.map +1 -1
  197. package/dist/utils/project.js +8 -6
  198. package/dist/utils/project.js.map +1 -1
  199. package/dist/utils/s3-upload.d.ts +0 -1
  200. package/dist/utils/s3-upload.d.ts.map +1 -1
  201. package/dist/utils/s3-upload.js +10 -3
  202. package/dist/utils/s3-upload.js.map +1 -1
  203. package/dist/utils/token-display.d.ts.map +1 -1
  204. package/dist/utils/token-display.js +11 -5
  205. package/dist/utils/token-display.js.map +1 -1
  206. package/dist/utils/typescript-validator.d.ts.map +1 -1
  207. package/dist/utils/typescript-validator.js +1 -6
  208. package/dist/utils/typescript-validator.js.map +1 -1
  209. package/package.json +24 -7
@@ -0,0 +1,551 @@
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.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
+ return 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
+ }
172
+ async function createVersion(args) {
173
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:create', {
174
+ body: {
175
+ collectionId: args.collectionSlug,
176
+ contentSystemId: this.contentSystemId,
177
+ data: dataToContentAPI(this.payload, args.collectionSlug, args.versionData),
178
+ documentId: String(args.parent),
179
+ latest: !args.autosave
180
+ }
181
+ });
182
+ if (error) {
183
+ throw new Error(`Content API createVersion error: ${JSON.stringify(error)}`);
184
+ }
185
+ if (!response) {
186
+ throw new Error('No response from createVersion');
187
+ }
188
+ if (!('data' in response.result)) {
189
+ throw new Error('Unexpected response format from createVersion');
190
+ }
191
+ return unwrapDocument(this.payload, response.result.data, args.collectionSlug);
192
+ }
193
+ async function updateVersion(args) {
194
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {
195
+ body: {
196
+ collectionId: args.collection,
197
+ contentSystemId: this.contentSystemId,
198
+ createOnMissing: false,
199
+ data: dataToContentAPI(this.payload, args.collection, args.versionData),
200
+ where: convertPayloadWhereToContentAPI(args.where ?? {
201
+ id: {
202
+ equals: args.id
203
+ }
204
+ })
205
+ }
206
+ });
207
+ if (error) {
208
+ throw new Error(`Content API updateVersion error: ${JSON.stringify(error)}`);
209
+ }
210
+ if (!response?.result || !('data' in response.result)) {
211
+ throw new Error('No document data in updateVersion response');
212
+ }
213
+ const doc = response.result.data[0];
214
+ if (!doc) {
215
+ throw new Error('No document version matched the where clause');
216
+ }
217
+ return unwrapDocument(this.payload, doc, args.collection);
218
+ }
219
+ async function deleteVersions(args) {
220
+ if (!args.collection) {
221
+ throw new Error('deleteVersions requires a collection');
222
+ }
223
+ const { error } = await this.client.POST('/api/v0/document_versions:delete', {
224
+ body: {
225
+ collectionId: args.collection,
226
+ contentSystemId: this.contentSystemId,
227
+ where: convertPayloadWhereToContentAPI(args.where)
228
+ }
229
+ });
230
+ if (error) {
231
+ throw new Error(`Content API deleteVersions error: ${JSON.stringify(error)}`);
232
+ }
233
+ }
234
+ async function findOne(args) {
235
+ const { docs } = await this.find({
236
+ collection: args.collection,
237
+ joins: args.joins,
238
+ limit: 1,
239
+ pagination: false,
240
+ where: args.where
241
+ });
242
+ return docs[0] ?? null;
243
+ }
244
+ async function updateMany(args) {
245
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
246
+ body: {
247
+ collectionId: args.collection,
248
+ contentSystemId: this.contentSystemId,
249
+ createOnMissing: false,
250
+ data: dataToContentAPI(this.payload, args.collection, args.data),
251
+ returning: {},
252
+ where: convertPayloadWhereToContentAPI(args.where)
253
+ }
254
+ });
255
+ if (error) {
256
+ throw new Error(`Content API updateMany error: ${JSON.stringify(error)}`);
257
+ }
258
+ if (!response) {
259
+ throw new Error('No response from updateMany');
260
+ }
261
+ if (response.result && 'data' in response.result) {
262
+ return response.result.data.map((doc)=>unwrapDocument(this.payload, doc, args.collection));
263
+ }
264
+ return null;
265
+ }
266
+ async function updateOne(args) {
267
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
268
+ body: {
269
+ collectionId: args.collection,
270
+ contentSystemId: this.contentSystemId,
271
+ createOnMissing: false,
272
+ data: dataToContentAPI(this.payload, args.collection, args.data),
273
+ returning: {},
274
+ where: convertPayloadWhereToContentAPI(args.where ?? {
275
+ id: {
276
+ equals: args.id
277
+ }
278
+ })
279
+ }
280
+ });
281
+ if (error) {
282
+ throw new Error(`Content API updateOne error: ${JSON.stringify(error)}`);
283
+ }
284
+ if (!response) {
285
+ throw new Error('No response from updateOne');
286
+ }
287
+ if (!response.result || !('data' in response.result)) {
288
+ throw new Error('Unexpected response format from updateOne');
289
+ }
290
+ const doc = response.result.data[0];
291
+ if (!doc) {
292
+ throw new Error('No document matched the where clause for update');
293
+ }
294
+ return unwrapDocument(this.payload, doc, args.collection);
295
+ }
296
+ async function deleteMany(args) {
297
+ const { error } = await this.client.POST('/api/v0/documents:delete', {
298
+ body: {
299
+ collectionId: args.collection,
300
+ contentSystemId: this.contentSystemId,
301
+ where: convertPayloadWhereToContentAPI(args.where)
302
+ }
303
+ });
304
+ if (error) {
305
+ throw new Error(`Content API deleteMany error: ${JSON.stringify(error)}`);
306
+ }
307
+ }
308
+ async function deleteOne(args) {
309
+ const { data: response, error } = await this.client.POST('/api/v0/documents:delete', {
310
+ body: {
311
+ collectionId: args.collection,
312
+ contentSystemId: this.contentSystemId,
313
+ returning: {},
314
+ where: convertPayloadWhereToContentAPI(args.where)
315
+ }
316
+ });
317
+ if (error) {
318
+ throw new Error(`Content API deleteOne error: ${JSON.stringify(error)}`);
319
+ }
320
+ if (!response?.result || !('data' in response.result)) {
321
+ throw new Error('No document data in deleteOne response');
322
+ }
323
+ const doc = response.result.data[0];
324
+ if (!doc) {
325
+ throw new Error('No document matched the where clause for deletion');
326
+ }
327
+ return unwrapDocument(this.payload, doc, args.collection);
328
+ }
329
+ async function create(args) {
330
+ const id = args.data.id || uuid();
331
+ const { data: response, error } = await this.client.POST('/api/v0/documents:create', {
332
+ body: {
333
+ id: String(id),
334
+ collectionId: args.collection,
335
+ contentSystemId: this.contentSystemId,
336
+ data: dataToContentAPI(this.payload, args.collection, args.data)
337
+ }
338
+ });
339
+ if (error) {
340
+ throw new Error(`Content API create error: ${JSON.stringify(error)}`);
341
+ }
342
+ if (!response) {
343
+ throw new Error('No response from create');
344
+ }
345
+ if (!('data' in response.result)) {
346
+ throw new Error('Unexpected response format from create');
347
+ }
348
+ return unwrapDocument(this.payload, response.result.data, args.collection);
349
+ }
350
+ async function count(args) {
351
+ const { data: response, error } = await this.client.POST('/api/v0/documents:count', {
352
+ body: {
353
+ collectionId: args.collection,
354
+ contentSystemId: this.contentSystemId,
355
+ where: convertPayloadWhereToContentAPI(args.where)
356
+ }
357
+ });
358
+ if (error) {
359
+ throw new Error(`Content API count error: ${JSON.stringify(error)}`);
360
+ }
361
+ if (!response) {
362
+ throw new Error('No response from count');
363
+ }
364
+ return {
365
+ totalDocs: response.result.count
366
+ };
367
+ }
368
+ async function countVersions(args) {
369
+ const { data: response, error } = await this.client.POST('/api/v0/document_versions:count', {
370
+ body: {
371
+ collectionId: args.collection,
372
+ contentSystemId: this.contentSystemId,
373
+ where: convertPayloadWhereToContentAPI(args.where)
374
+ }
375
+ });
376
+ if (error) {
377
+ throw new Error(`Content API countVersions error: ${JSON.stringify(error)}`);
378
+ }
379
+ if (!response) {
380
+ throw new Error('No response from countVersions');
381
+ }
382
+ return {
383
+ totalDocs: response.result.count
384
+ };
385
+ }
386
+ async function upsert(args) {
387
+ let documentId = args.data.id;
388
+ if (!documentId && args.where && 'id' in args.where) {
389
+ const idClause = args.where.id;
390
+ if (idClause && 'equals' in idClause) {
391
+ documentId = idClause.equals;
392
+ }
393
+ }
394
+ if (!documentId) {
395
+ documentId = uuid();
396
+ }
397
+ const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
398
+ body: {
399
+ collectionId: args.collection,
400
+ contentSystemId: this.contentSystemId,
401
+ createOnMissing: {
402
+ id: documentId
403
+ },
404
+ data: dataToContentAPI(this.payload, args.collection, args.data),
405
+ where: convertPayloadWhereToContentAPI(args.where)
406
+ }
407
+ });
408
+ if (error) {
409
+ throw new Error(`Content API upsert error: ${JSON.stringify(error)}`);
410
+ }
411
+ if (!response) {
412
+ throw new Error('No response from upsert');
413
+ }
414
+ if (!response.result || !('data' in response.result)) {
415
+ throw new Error('Unexpected response format from upsert');
416
+ }
417
+ const doc = response.result.data[0];
418
+ if (!doc) {
419
+ throw new Error('No document data in upsert response');
420
+ }
421
+ return unwrapDocument(this.payload, doc, args.collection);
422
+ }
423
+ function createGlobal(args) {
424
+ return this.create({
425
+ collection: getGlobalSlug(args.slug),
426
+ data: {
427
+ ...args.data,
428
+ globalType: args.slug
429
+ }
430
+ });
431
+ }
432
+ function findGlobal(args) {
433
+ return this.findOne({
434
+ collection: getGlobalSlug(args.slug),
435
+ where: args.where ?? {}
436
+ });
437
+ }
438
+ async function updateGlobal(args) {
439
+ // Use upsert to ensure the global exists
440
+ // Use slug as the consistent document ID for globals
441
+ return this.upsert({
442
+ collection: getGlobalSlug(args.slug),
443
+ data: args.data,
444
+ where: {
445
+ id: {
446
+ equals: args.slug
447
+ }
448
+ }
449
+ });
450
+ }
451
+ // TODO: remove Omit when this PR is released: https://github.com/payloadcms/payload/pull/15183
452
+ function findGlobalVersions(args) {
453
+ return this.findVersions({
454
+ collection: getGlobalSlug(args.global),
455
+ limit: args.limit,
456
+ page: args.page,
457
+ pagination: args.pagination,
458
+ sort: args.sort,
459
+ where: args.where
460
+ });
461
+ }
462
+ function createGlobalVersion(args) {
463
+ // For globals, use the globalSlug as the consistent document ID
464
+ // This matches what we do in updateGlobal
465
+ return this.createVersion({
466
+ autosave: args.autosave,
467
+ collectionSlug: getGlobalSlug(args.globalSlug),
468
+ createdAt: args.createdAt,
469
+ parent: args.globalSlug,
470
+ updatedAt: args.updatedAt,
471
+ versionData: args.versionData
472
+ });
473
+ }
474
+ function updateGlobalVersion(args) {
475
+ // UpdateVersion requires either id OR where, not both
476
+ if (args.id !== undefined) {
477
+ return this.updateVersion({
478
+ id: args.id,
479
+ collection: getGlobalSlug(args.global),
480
+ versionData: args.versionData
481
+ });
482
+ }
483
+ // args.where is guaranteed by Payload when args.id is undefined
484
+ return this.updateVersion({
485
+ collection: getGlobalSlug(args.global),
486
+ versionData: args.versionData,
487
+ where: args.where
488
+ });
489
+ }
490
+ function countGlobalVersions(args) {
491
+ return this.countVersions({
492
+ collection: getGlobalSlug(args.global),
493
+ where: args.where
494
+ });
495
+ }
496
+ export const contentAPIAdapter = (opts)=>({
497
+ name: 'content_api',
498
+ defaultIDType: 'text',
499
+ init: ({ payload })=>{
500
+ const client = createClient({
501
+ baseUrl: opts.url
502
+ });
503
+ const middlewareOpts = {
504
+ auth: opts.auth,
505
+ contentSystemId: opts.contentSystemId,
506
+ logger: payload.logger,
507
+ url: opts.url
508
+ };
509
+ client.use(createAuthMiddleware(middlewareOpts));
510
+ client.use(createErrorMiddleware(middlewareOpts));
511
+ return createDatabaseAdapter({
512
+ name: 'content_api',
513
+ auth: opts.auth,
514
+ beginTransaction: ()=>Promise.resolve('no-op-transaction'),
515
+ client,
516
+ commitTransaction: async ()=>{},
517
+ contentSystemId: opts.contentSystemId,
518
+ count: count,
519
+ countGlobalVersions: countGlobalVersions,
520
+ countVersions: countVersions,
521
+ create: create,
522
+ createGlobal: createGlobal,
523
+ createGlobalVersion: createGlobalVersion,
524
+ createVersion: createVersion,
525
+ defaultIDType: 'text',
526
+ deleteMany: deleteMany,
527
+ deleteOne: deleteOne,
528
+ deleteVersions: deleteVersions,
529
+ find: find,
530
+ findDistinct: ()=>Promise.reject(new Error('findDistinct is not yet implemented for Content API adapter')),
531
+ findGlobal: findGlobal,
532
+ findGlobalVersions: findGlobalVersions,
533
+ findOne: findOne,
534
+ findVersions: findVersions,
535
+ init,
536
+ packageName: '@payloadcms/db-content-api',
537
+ payload,
538
+ queryDrafts: queryDrafts,
539
+ rollbackTransaction: async ()=>{},
540
+ updateGlobal: updateGlobal,
541
+ updateGlobalVersion: updateGlobalVersion,
542
+ updateMany: updateMany,
543
+ updateOne: updateOne,
544
+ updateVersion: updateVersion,
545
+ upsert: upsert,
546
+ url: opts.url
547
+ });
548
+ }
549
+ });
550
+
551
+ //# 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.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 return 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\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 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 throw new Error('No document version matched the where clause')\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 throw new Error('No document matched the where clause for update')\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 throw new Error('No document matched the where clause for deletion')\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),\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),\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","latest","equals","createVersion","collectionSlug","versionData","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":"AAgDA,OAAOA,kBAAkB,gBAAe;AACxC,SAASC,qBAAqB,QAAQ,UAAS;AAC/C,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAIjC,SAASC,iBAAiB,QAAQ,iCAAgC;AAClE,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,eAAe,EAAEC,8BAA8B,QAAQ,8BAA6B;AAC7F,SAASC,cAAc,QAAQ,qCAAoC;AACnE,SAAwBC,oBAAoB,EAAEC,qBAAqB,QAAQ,sBAAqB;AAChG,SAASC,gBAAgB,QAAQ,sBAAqB;AACtD,SAASC,+BAA+B,QAAQ,uBAAsB;AACtE,SAASC,+BAA+B,QAAQ,uBAAsB;AAetE,eAAeC;IACb,IAAI,IAAI,CAACC,IAAI,CAACC,IAAI,KAAK,UAAU;QAC/B,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;IAC3B,OAAO,IAAI,IAAI,CAACJ,IAAI,CAACC,IAAI,KAAK,cAAc;QAC1C,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;IAC3B,OAAO;QACL,IAAI,CAACF,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;IAC3B;IAEA,IAAIC,QAAQC,GAAG,CAACC,qBAAqB,KAAK,QAAQ;QAChD,IAAI,CAACL,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,kCAAkC,EAAE,IAAI,CAACI,eAAe,CAAC,MAAM,CAAC;QAC1F,IAAI;YACF,MAAMC,MAAM,GAAG,IAAI,CAACC,GAAG,CAAC,aAAa,CAAC,EAAE;gBACtCC,MAAMC,KAAKC,SAAS,CAAC;oBAAEL,iBAAiB,IAAI,CAACA,eAAe;gBAAC;gBAC7DM,SAAS;oBAAE,gBAAgB;gBAAmB;gBAC9CC,QAAQ;YACV;YACA,IAAI,CAACb,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC;QAC3B,EAAE,OAAOY,OAAO;YACd,IAAI,CAACd,OAAO,CAACC,MAAM,CAACc,IAAI,CAAC,CAAC,+BAA+B,EAAE,AAACD,MAAgBE,OAAO,EAAE;QACvF;IACF;IAEA,IAAIC;IACJ,IAAI;QACF,MAAM,EAAEC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACC,GAAG,CACrD,yDACA;YACEC,QAAQ;gBAAEC,MAAM;oBAAEjB,iBAAiB,IAAI,CAACA,eAAe;gBAAC;YAAE;QAC5D;QAGF,IAAIQ,OAAO;YACT,MAAM,IAAIU,MAAMd,KAAKC,SAAS,CAACG;QACjC;QACA,IAAI,CAACK,UAAU;YACb,MAAM,IAAIK,MAAM;QAClB;QAEAP,cAAc,IAAIQ,IAAIN,SAASD,IAAI,CAACQ,GAAG,CAAC,CAACC,IAAMA,EAAEC,EAAE;QACnD,IAAI,CAAC5B,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,MAAM,EAAEe,YAAYY,IAAI,CAAC,qBAAqB,CAAC;IAC3E,EAAE,OAAOf,OAAO;QACd,IAAI,CAACd,OAAO,CAACC,MAAM,CAACc,IAAI,CACtB,CAAC,yDAAyD,EAAE,AAACD,MAAgBE,OAAO,EAAE;QAExFC,cAAc,IAAIQ;IACpB;IAEA,KAAK,MAAMK,cAAc,IAAI,CAAC9B,OAAO,CAAC+B,MAAM,CAACC,WAAW,CAAE;QACxD,IAAI,CAACf,YAAYgB,GAAG,CAACH,WAAWI,IAAI,GAAG;YACrC,MAAMC,iBAAiBC,IAAI,CAAC,IAAI,EAAEN,WAAWI,IAAI;QACnD;IACF;IAEA,KAAK,MAAMG,UAAU,IAAI,CAACrC,OAAO,CAAC+B,MAAM,CAACO,OAAO,IAAI,EAAE,CAAE;QACtD,MAAMC,WAAW,CAAC,QAAQ,EAAEF,OAAOH,IAAI,EAAE;QACzC,IAAI,CAACjB,YAAYgB,GAAG,CAACM,WAAW;YAC9B,MAAMJ,iBAAiBC,IAAI,CAAC,IAAI,EAAEG;QACpC;IACF;AACF;AAEA,eAAeJ,iBAA0CK,YAAoB;IAC3E,IAAI;QACF,MAAM,EAAE1B,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CACtC,yDACA;YACEhC,MAAM;gBAAEmB,IAAIY;YAAa;YACzBlB,QAAQ;gBAAEC,MAAM;oBAAEjB,iBAAiB,IAAI,CAACA,eAAe;gBAAC;YAAE;QAC5D;QAGF,IAAIQ,OAAO;YACT,MAAM,IAAIU,MAAMd,KAAKC,SAAS,CAACG;QACjC;QACA,IAAI,CAACd,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,oBAAoB,EAAEsC,cAAc;IAChE,EAAE,OAAO1B,OAAO;QACd,MAAM4B,eAAe,AAAC5B,MAAgBE,OAAO;QAC7C,IAAI,CAAC0B,aAAaC,QAAQ,CAAC,qBAAqB,CAACD,aAAaC,QAAQ,CAAC,QAAQ;YAC7E,IAAI,CAAC3C,OAAO,CAACC,MAAM,CAACc,IAAI,CAAC,CAAC,4BAA4B,EAAEyB,aAAa,EAAE,EAAEE,cAAc;QACzF;IACF;AACF;AAEA,eAAeE,SAEb,EACEd,UAAU,EACVe,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,UAAU,EACVC,IAAI,EACJC,KAAK,EAMoD;IAE3D,MAAMC,mBAAmB,IAAI,CAACnD,OAAO,CAAC+B,MAAM,CAACC,WAAW,CAACoB,IAAI,CAAC,CAACzB,IAAMA,EAAEO,IAAI,KAAKJ;IAChF,MAAMuB,mBAAmBhE,gBAAgB4D,MAAME;IAE/C,MAAM,EAAEjC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,0BAA0B;QACjFhC,MAAM;YACJ+B,cAAcV;YACdxB,iBAAiB,IAAI,CAACA,eAAe;YACrCgD,MAAMH,mBACFxD,gCAAgC,IAAI,CAACK,OAAO,EAAEmD,kBAAkBN,SAChEU;YACJT;YACAC,MAAMA,QAAQ;YACdE,MAAM3D,+BAA+B+D;YACrCH,OAAOtD,gCAAgCsD,SAAS,CAAC;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,4BAA4B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACxE;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IAEA,OAAO;QACLgC,MAAMrC,SAASsC,MAAM,CAACvC,IAAI,CAACQ,GAAG,CAAC,CAACgC,MAAQnE,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAK5B;QAC1E,GAAG3C,kBAAkBgC,SAASsC,MAAM,CAACT,UAAU,EAAEA,WAAW;IAC9D;AACF;AAEA,eAAeI,KAA8BO,IAAc;IACzD,MAAMR,mBAAmB,IAAI,CAACnD,OAAO,CAAC+B,MAAM,CAACC,WAAW,CAACoB,IAAI,CAAC,CAACzB,IAAMA,EAAEO,IAAI,KAAKyB,KAAK7B,UAAU;IAC/F,OAAOc,SAASR,IAAI,CAAC,IAAI,EAAE;QACzBN,YAAY6B,KAAK7B,UAAU;QAC3Be,OAAOc,KAAKd,KAAK;QACjBC,OAAOa,KAAKb,KAAK,IAAI;QACrBC,MAAMY,KAAKZ,IAAI,IAAI;QACnBC,YAAYW,KAAKX,UAAU;QAC3BC,MAAMU,KAAKV,IAAI,IAAIE,kBAAkBS;QACrCV,OAAOS,KAAKT,KAAK;IACnB;AACF;AAEA,+FAA+F;AAC/F,eAAeW,aAAsCF,IAAoC;IACvF,MAAMG,cAAclE,gCAAgC+D,KAAKT,KAAK,IAAI,CAAC,GAAG;QACpEa,oBAAoB;IACtB;IAEA,MAAM,EAAE7C,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,kCAAkC;QACzFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCwC,OAAOa,KAAKb,KAAK,IAAI;YACrBC,MAAMY,KAAKZ,IAAI,IAAI;YACnBE,MAAM3D,+BAA+BqE,KAAKV,IAAI;YAC9CC,OAAOY;QACT;IACF;IAEA,IAAIhD,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,gCAAgC,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC5E;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IAEA,MAAMgC,OAAOrC,SAASsC,MAAM,CAACvC,IAAI,CAACQ,GAAG,CAAC,CAACgC,MAAQnE,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;IAEhG,OAAO;QACL0B;QACA,GAAGrE,kBAAkBgC,SAASsC,MAAM,CAACT,UAAU,EAAEW,KAAKX,UAAU,CAAC;IACnE;AACF;AAEA,eAAegB,YAAqCL,IAAqB;IACvE,OAAO,IAAI,CAACE,YAAY,CAAC;QACvB/B,YAAY6B,KAAK7B,UAAU;QAC3BgB,OAAOa,KAAKb,KAAK;QACjBC,MAAMY,KAAKZ,IAAI;QACfC,YAAYW,KAAKX,UAAU;QAC3BC,MAAMU,KAAKV,IAAI;QACfC,OAAO;YAAE,GAAGS,KAAKT,KAAK;YAAEe,QAAQ;gBAAEC,QAAQ;YAAK;QAAE;IACnD;AACF;AAEA,eAAeC,cAAuCR,IAAuB;IAC3E,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,oCAAoC;QAC3FhC,MAAM;YACJ+B,cAAcmB,KAAKS,cAAc;YACjC9D,iBAAiB,IAAI,CAACA,eAAe;YACrCY,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAKS,cAAc,EAAET,KAAKU,WAAW;YAC1EC,YAAYC,OAAOZ,KAAKa,MAAM;YAC9BP,QAAQ,CAACN,KAAKc,QAAQ;QACxB;IACF;IAEA,IAAI3D,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,iCAAiC,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC7E;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IACA,IAAI,CAAE,CAAA,UAAUL,SAASsC,MAAM,AAAD,GAAI;QAChC,MAAM,IAAIjC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAEmB,SAASsC,MAAM,CAACvC,IAAI,EAAEyC,KAAKS,cAAc;AAC/E;AAEA,eAAeM,cAAuCf,IAAuB;IAC3E,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,oCAAoC;QAC3FhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCqE,iBAAiB;YACjBzD,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAK7B,UAAU,EAAE6B,KAAKU,WAAW;YACtEnB,OAAOtD,gCAAgC+D,KAAKT,KAAK,IAAI;gBAAEtB,IAAI;oBAAEsC,QAAQP,KAAK/B,EAAE;gBAAC;YAAE;QACjF;IACF;IAEA,IAAId,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,iCAAiC,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC7E;IACA,IAAI,CAACK,UAAUsC,UAAU,CAAE,CAAA,UAAUtC,SAASsC,MAAM,AAAD,GAAI;QACrD,MAAM,IAAIjC,MAAM;IAClB;IAEA,MAAMkC,MAAMvC,SAASsC,MAAM,CAACvC,IAAI,CAAC,EAAE;IACnC,IAAI,CAACwC,KAAK;QACR,MAAM,IAAIlC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;AAC1D;AAEA,eAAe8C,eAAwCjB,IAAwB;IAC7E,IAAI,CAACA,KAAK7B,UAAU,EAAE;QACpB,MAAM,IAAIN,MAAM;IAClB;IAEA,MAAM,EAAEV,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,oCAAoC;QAC3EhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrC4C,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,kCAAkC,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC9E;AACF;AAEA,eAAe+D,QAAiClB,IAAiB;IAC/D,MAAM,EAAEH,IAAI,EAAE,GAAG,MAAM,IAAI,CAACJ,IAAI,CAAC;QAC/BtB,YAAY6B,KAAK7B,UAAU;QAC3Be,OAAOc,KAAKd,KAAK;QACjBC,OAAO;QACPE,YAAY;QACZE,OAAOS,KAAKT,KAAK;IACnB;IACA,OAAOM,IAAI,CAAC,EAAE,IAAI;AACpB;AAEA,eAAesB,WAAoCnB,IAAoB;IACrE,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCqE,iBAAiB;YACjBzD,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAK7B,UAAU,EAAE6B,KAAKzC,IAAI;YAC/D6D,WAAW,CAAC;YACZ7B,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,8BAA8B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC1E;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IAEA,IAAIL,SAASsC,MAAM,IAAI,UAAUtC,SAASsC,MAAM,EAAE;QAChD,OAAOtC,SAASsC,MAAM,CAACvC,IAAI,CAACQ,GAAG,CAAC,CAACgC,MAAQnE,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;IAC5F;IACA,OAAO;AACT;AAEA,eAAekD,UAAmCrB,IAAmB;IACnE,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCqE,iBAAiB;YACjBzD,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAK7B,UAAU,EAAE6B,KAAKzC,IAAI;YAC/D6D,WAAW,CAAC;YACZ7B,OAAOtD,gCAAgC+D,KAAKT,KAAK,IAAI;gBAAEtB,IAAI;oBAAEsC,QAAQP,KAAK/B,EAAE;gBAAC;YAAE;QACjF;IACF;IAEA,IAAId,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,6BAA6B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACzE;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IACA,IAAI,CAACL,SAASsC,MAAM,IAAI,CAAE,CAAA,UAAUtC,SAASsC,MAAM,AAAD,GAAI;QACpD,MAAM,IAAIjC,MAAM;IAClB;IAEA,MAAMkC,MAAMvC,SAASsC,MAAM,CAACvC,IAAI,CAAC,EAAE;IACnC,IAAI,CAACwC,KAAK;QACR,MAAM,IAAIlC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;AAC1D;AAEA,eAAemD,WAAoCtB,IAAoB;IACrE,MAAM,EAAE7C,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnEhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrC4C,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,8BAA8B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC1E;AACF;AAEA,eAAeoE,UAAmCvB,IAAmB;IACnE,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCyE,WAAW,CAAC;YACZ7B,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,6BAA6B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACzE;IACA,IAAI,CAACK,UAAUsC,UAAU,CAAE,CAAA,UAAUtC,SAASsC,MAAM,AAAD,GAAI;QACrD,MAAM,IAAIjC,MAAM;IAClB;IAEA,MAAMkC,MAAMvC,SAASsC,MAAM,CAACvC,IAAI,CAAC,EAAE;IACnC,IAAI,CAACwC,KAAK;QACR,MAAM,IAAIlC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;AAC1D;AAEA,eAAeqD,OAAgCxB,IAAgB;IAC7D,MAAM/B,KAAK,AAAC+B,KAAKzC,IAAI,CAACU,EAAE,IAA2B1C;IAEnD,MAAM,EAAEgC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnFhC,MAAM;YACJmB,IAAI2C,OAAO3C;YACXY,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCY,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAK7B,UAAU,EAAE6B,KAAKzC,IAAI;QACjE;IACF;IAEA,IAAIJ,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,0BAA0B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACtE;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IACA,IAAI,CAAE,CAAA,UAAUL,SAASsC,MAAM,AAAD,GAAI;QAChC,MAAM,IAAIjC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAEmB,SAASsC,MAAM,CAACvC,IAAI,EAAEyC,KAAK7B,UAAU;AAC3E;AAEA,eAAesD,MAA+BzB,IAAe;IAC3D,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,2BAA2B;QAClFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrC4C,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,yBAAyB,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACrE;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IAEA,OAAO;QAAE6D,WAAWlE,SAASsC,MAAM,CAAC2B,KAAK;IAAC;AAC5C;AAEA,eAAeE,cAAuC3B,IAAe;IACnE,MAAM,EAAEzC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,mCAAmC;QAC1FhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrC4C,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,iCAAiC,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IAC7E;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IAEA,OAAO;QAAE6D,WAAWlE,SAASsC,MAAM,CAAC2B,KAAK;IAAC;AAC5C;AAEA,eAAeG,OAAgC5B,IAAgB;IAC7D,IAAIW,aAAaX,KAAKzC,IAAI,CAACU,EAAE;IAC7B,IAAI,CAAC0C,cAAcX,KAAKT,KAAK,IAAI,QAAQS,KAAKT,KAAK,EAAE;QACnD,MAAMsC,WAAW,AAAC7B,KAAKT,KAAK,CAA6BtB,EAAE;QAC3D,IAAI4D,YAAY,YAAYA,UAAU;YACpClB,aAAakB,SAAStB,MAAM;QAC9B;IACF;IACA,IAAI,CAACI,YAAY;QACfA,aAAapF;IACf;IAEA,MAAM,EAAEgC,MAAMC,QAAQ,EAAEL,KAAK,EAAE,GAAG,MAAM,IAAI,CAACM,MAAM,CAACqB,IAAI,CAAC,4BAA4B;QACnFhC,MAAM;YACJ+B,cAAcmB,KAAK7B,UAAU;YAC7BxB,iBAAiB,IAAI,CAACA,eAAe;YACrCqE,iBAAiB;gBAAE/C,IAAI0C;YAAW;YAClCpD,MAAMxB,iBAAiB,IAAI,CAACM,OAAO,EAAE2D,KAAK7B,UAAU,EAAE6B,KAAKzC,IAAI;YAC/DgC,OAAOtD,gCAAgC+D,KAAKT,KAAK;QACnD;IACF;IAEA,IAAIpC,OAAO;QACT,MAAM,IAAIU,MAAM,CAAC,0BAA0B,EAAEd,KAAKC,SAAS,CAACG,QAAQ;IACtE;IACA,IAAI,CAACK,UAAU;QACb,MAAM,IAAIK,MAAM;IAClB;IACA,IAAI,CAACL,SAASsC,MAAM,IAAI,CAAE,CAAA,UAAUtC,SAASsC,MAAM,AAAD,GAAI;QACpD,MAAM,IAAIjC,MAAM;IAClB;IAEA,MAAMkC,MAAMvC,SAASsC,MAAM,CAACvC,IAAI,CAAC,EAAE;IACnC,IAAI,CAACwC,KAAK;QACR,MAAM,IAAIlC,MAAM;IAClB;IAEA,OAAOjC,eAAe,IAAI,CAACS,OAAO,EAAE0D,KAAKC,KAAK7B,UAAU;AAC1D;AAEA,SAAS2D,aAAsC9B,IAAsB;IACnE,OAAO,IAAI,CAACwB,MAAM,CAAC;QACjBrD,YAAY1C,cAAcuE,KAAKzB,IAAI;QACnChB,MAAM;YAAE,GAAGyC,KAAKzC,IAAI;YAAEwE,YAAY/B,KAAKzB,IAAI;QAAC;IAC9C;AACF;AAEA,SAASyD,WAAoChC,IAAoB;IAC/D,OAAO,IAAI,CAACkB,OAAO,CAAC;QAAE/C,YAAY1C,cAAcuE,KAAKzB,IAAI;QAAGgB,OAAOS,KAAKT,KAAK,IAAI,CAAC;IAAE;AACtF;AAEA,eAAe0C,aAAsCjC,IAAsB;IACzE,yCAAyC;IACzC,qDAAqD;IACrD,OAAO,IAAI,CAAC4B,MAAM,CAAC;QACjBzD,YAAY1C,cAAcuE,KAAKzB,IAAI;QACnChB,MAAMyC,KAAKzC,IAAI;QACfgC,OAAO;YAAEtB,IAAI;gBAAEsC,QAAQP,KAAKzB,IAAI;YAAC;QAAE;IACrC;AACF;AAEA,+FAA+F;AAC/F,SAAS2D,mBAA4ClC,IAA0C;IAC7F,OAAO,IAAI,CAACE,YAAY,CAAC;QACvB/B,YAAY1C,cAAcuE,KAAKtB,MAAM;QACrCS,OAAOa,KAAKb,KAAK;QACjBC,MAAMY,KAAKZ,IAAI;QACfC,YAAYW,KAAKX,UAAU;QAC3BC,MAAMU,KAAKV,IAAI;QACfC,OAAOS,KAAKT,KAAK;IACnB;AACF;AAEA,SAAS4C,oBAA6CnC,IAA6B;IACjF,gEAAgE;IAChE,0CAA0C;IAC1C,OAAO,IAAI,CAACQ,aAAa,CAAC;QACxBM,UAAUd,KAAKc,QAAQ;QACvBL,gBAAgBhF,cAAcuE,KAAKoC,UAAU;QAC7CC,WAAWrC,KAAKqC,SAAS;QACzBxB,QAAQb,KAAKoC,UAAU;QACvBE,WAAWtC,KAAKsC,SAAS;QACzB5B,aAAaV,KAAKU,WAAW;IAC/B;AACF;AAEA,SAAS6B,oBAA6CvC,IAA6B;IACjF,sDAAsD;IACtD,IAAIA,KAAK/B,EAAE,KAAK2B,WAAW;QACzB,OAAO,IAAI,CAACmB,aAAa,CAAC;YACxB9C,IAAI+B,KAAK/B,EAAE;YACXE,YAAY1C,cAAcuE,KAAKtB,MAAM;YACrCgC,aAAaV,KAAKU,WAAW;QAC/B;IACF;IACA,gEAAgE;IAChE,OAAO,IAAI,CAACK,aAAa,CAAC;QACxB5C,YAAY1C,cAAcuE,KAAKtB,MAAM;QACrCgC,aAAaV,KAAKU,WAAW;QAC7BnB,OAAOS,KAAKT,KAAK;IACnB;AACF;AAEA,SAASiD,oBAA6CxC,IAA4B;IAChF,OAAO,IAAI,CAAC2B,aAAa,CAAC;QAAExD,YAAY1C,cAAcuE,KAAKtB,MAAM;QAAGa,OAAOS,KAAKT,KAAK;IAAC;AACxF;AAEA,OAAO,MAAMkD,oBAAoB,CAACC,OAAiD,CAAA;QACjFC,MAAM;QACNC,eAAe;QACf1G,MAAM,CAAC,EAAEG,OAAO,EAAE;YAChB,MAAMoB,SAASrC,aAAoB;gBAAEyH,SAASH,KAAK7F,GAAG;YAAC;YAEvD,MAAMiG,iBAAiB;gBACrB3G,MAAMuG,KAAKvG,IAAI;gBACfQ,iBAAiB+F,KAAK/F,eAAe;gBACrCL,QAAQD,QAAQC,MAAM;gBACtBO,KAAK6F,KAAK7F,GAAG;YACf;YAEAY,OAAOsF,GAAG,CAAClH,qBAAqBiH;YAChCrF,OAAOsF,GAAG,CAACjH,sBAAsBgH;YAEjC,OAAOzH,sBAAyC;gBAC9CsH,MAAM;gBACNxG,MAAMuG,KAAKvG,IAAI;gBACf6G,kBAAkB,IAAMC,QAAQC,OAAO,CAAC;gBACxCzF;gBACA0F,mBAAmB,WAAa;gBAChCxG,iBAAiB+F,KAAK/F,eAAe;gBACrC8E,OAAOA;gBACPe,qBAAqBA;gBACrBb,eAAeA;gBACfH,QAAQA;gBACRM,cAAcA;gBACdK,qBAAqBA;gBACrB3B,eAAeA;gBACfoC,eAAe;gBACftB,YAAYA;gBACZC,WAAWA;gBACXN,gBAAgBA;gBAChBxB,MAAMA;gBACN2D,cAAc,IACZH,QAAQI,MAAM,CAAC,IAAIxF,MAAM;gBAC3BmE,YAAYA;gBACZE,oBAAoBA;gBACpBhB,SAASA;gBACThB,cAAcA;gBACdhE;gBACAoH,aAAa;gBACbjH;gBACAgE,aAAaA;gBACbkD,qBAAqB,WAAa;gBAClCtB,cAAcA;gBACdM,qBAAqBA;gBACrBpB,YAAYA;gBACZE,WAAWA;gBACXN,eAAeA;gBACfa,QAAQA;gBACR/E,KAAK6F,KAAK7F,GAAG;YACf;QACF;IACF,CAAA,EAAE"}
@@ -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"}