@payloadcms/figma 0.0.1-alpha.43 → 0.0.1-alpha.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db-content-api/generated/content-api-types.d.ts +3 -0
- package/dist/db-content-api/generated/content-api-types.d.ts.map +1 -1
- package/dist/db-content-api/generated/content-api-types.js.map +1 -1
- package/dist/db-content-api/index.d.ts +2 -0
- package/dist/db-content-api/index.d.ts.map +1 -1
- package/dist/db-content-api/index.js +92 -45
- package/dist/db-content-api/index.js.map +1 -1
- package/dist/db-content-api/utilities/data/index.js +1 -0
- package/dist/db-content-api/utilities/data/index.js.map +1 -1
- package/dist/db-content-api/utilities/locale/index.d.ts +10 -0
- package/dist/db-content-api/utilities/locale/index.d.ts.map +1 -0
- package/dist/db-content-api/utilities/locale/index.js +21 -0
- package/dist/db-content-api/utilities/locale/index.js.map +1 -0
- package/dist/db-content-api/utilities/meta/buildMeta.d.ts +1 -1
- package/dist/db-content-api/utilities/meta/buildMeta.d.ts.map +1 -1
- package/dist/db-content-api/utilities/meta/buildMeta.js.map +1 -1
- package/dist/storage-content-api/utilities/index.d.ts +1 -1
- package/dist/storage-content-api/utilities/index.d.ts.map +1 -1
- package/dist/storage-content-api/utilities/index.js +1 -1
- package/dist/storage-content-api/utilities/index.js.map +1 -1
- package/dist/utils/payload-config-ast.d.ts.map +1 -1
- package/dist/utils/payload-config-ast.js +7 -0
- package/dist/utils/payload-config-ast.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,33 +7,10 @@ import { unwrapDocument, unwrapFindResponse } from './temp-utilities/unwrapDocum
|
|
|
7
7
|
import { createAuthMiddleware, createErrorMiddleware } from './utilities/auth.js';
|
|
8
8
|
import { dataToContentAPI } from './utilities/data/index.js';
|
|
9
9
|
import { convertPayloadJoinsToContentAPI } from './utilities/joins.js';
|
|
10
|
+
import { addFallbackLocale } from './utilities/locale/index.js';
|
|
10
11
|
import { buildMeta } from './utilities/meta/index.js';
|
|
11
12
|
import { convertPayloadWhereToContentAPI } from './utilities/where.js';
|
|
12
|
-
async function
|
|
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
|
-
}
|
|
13
|
+
async function syncCollections() {
|
|
37
14
|
let existingIds;
|
|
38
15
|
try {
|
|
39
16
|
const { data: response, error } = await this.client.GET('/api/v0/content_systems/{contentSystemId}/collections', {
|
|
@@ -67,6 +44,19 @@ async function init() {
|
|
|
67
44
|
}
|
|
68
45
|
}
|
|
69
46
|
}
|
|
47
|
+
async function init() {
|
|
48
|
+
if (this.auth.mode === 'apiKey') {
|
|
49
|
+
this.payload.logger.info('Using API Key authentication');
|
|
50
|
+
} else if (this.auth.mode === 'tokenStore') {
|
|
51
|
+
this.payload.logger.info('Using TokenStore authentication (local dev)');
|
|
52
|
+
} else {
|
|
53
|
+
this.payload.logger.info('Using Dev JWT authentication (testing)');
|
|
54
|
+
}
|
|
55
|
+
if (process.env.PAYLOAD_DROP_DATABASE === 'true') {
|
|
56
|
+
await this.clearDatabase();
|
|
57
|
+
}
|
|
58
|
+
await syncCollections.call(this);
|
|
59
|
+
}
|
|
70
60
|
async function createCollection(collectionId) {
|
|
71
61
|
try {
|
|
72
62
|
const { error } = await this.client.POST('/api/v0/content_systems/{contentSystemId}/collections', {
|
|
@@ -90,24 +80,21 @@ async function createCollection(collectionId) {
|
|
|
90
80
|
}
|
|
91
81
|
}
|
|
92
82
|
}
|
|
93
|
-
async function findMany({ collection, joins, limit, locale, page, pagination, sort, where }) {
|
|
94
|
-
|
|
95
|
-
// 'all' is a special Payload value meaning "return all locales" - don't send to Content API
|
|
96
|
-
const localization = this.payload.config.localization;
|
|
97
|
-
const effectiveLocale = locale && locale !== 'all' ? locale : localization ? localization.defaultLocale : undefined;
|
|
83
|
+
async function findMany({ collection, joins, limit, locale: localeArg, page, pagination: _pagination, sort, where }) {
|
|
84
|
+
const locale = addFallbackLocale(localeArg, this.payload);
|
|
98
85
|
const { data: response, error } = await this.client.POST('/api/v0/documents:find', {
|
|
99
86
|
body: {
|
|
100
87
|
collection,
|
|
101
88
|
contentSystemId: this.contentSystemId,
|
|
102
89
|
join: convertPayloadJoinsToContentAPI(this.payload, collection, joins),
|
|
103
90
|
limit,
|
|
104
|
-
locale
|
|
91
|
+
locale,
|
|
105
92
|
page: page ?? 1,
|
|
106
93
|
sort: addFallbackSort(sort, this.payload, collection),
|
|
107
94
|
where: convertPayloadWhereToContentAPI(where ?? {}),
|
|
108
95
|
...buildMeta(this.payload, {
|
|
109
96
|
collection,
|
|
110
|
-
locale
|
|
97
|
+
locale,
|
|
111
98
|
where
|
|
112
99
|
})
|
|
113
100
|
}
|
|
@@ -141,10 +128,7 @@ async function findVersions(args) {
|
|
|
141
128
|
const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {
|
|
142
129
|
parentToDocumentId: true
|
|
143
130
|
});
|
|
144
|
-
|
|
145
|
-
// 'all' is a special Payload value meaning "return all locales" - don't send to Content API
|
|
146
|
-
const localization = this.payload.config.localization;
|
|
147
|
-
const effectiveLocale = args.locale && args.locale !== 'all' ? args.locale : localization ? localization.defaultLocale : undefined;
|
|
131
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
148
132
|
const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {
|
|
149
133
|
body: {
|
|
150
134
|
collection: args.collection,
|
|
@@ -152,13 +136,13 @@ async function findVersions(args) {
|
|
|
152
136
|
// TODO: FindVersionsArgs.limit should be 'number' not 'number | undefined'
|
|
153
137
|
// is sanitized by Payload Core before calling the adapter (defaults to 10 or 0 based on pagination)
|
|
154
138
|
limit: args.limit,
|
|
155
|
-
locale
|
|
139
|
+
locale,
|
|
156
140
|
page: args.page ?? 1,
|
|
157
141
|
sort: sortWithFallback,
|
|
158
142
|
where: whereClause,
|
|
159
143
|
...buildMeta(this.payload, {
|
|
160
144
|
collection: args.collection,
|
|
161
|
-
locale
|
|
145
|
+
locale,
|
|
162
146
|
where: args.where
|
|
163
147
|
})
|
|
164
148
|
}
|
|
@@ -175,6 +159,7 @@ async function queryDrafts(args) {
|
|
|
175
159
|
const versionsResult = await this.findVersions({
|
|
176
160
|
collection: args.collection,
|
|
177
161
|
limit: args.limit,
|
|
162
|
+
locale: args.locale,
|
|
178
163
|
page: args.page,
|
|
179
164
|
pagination: args.pagination,
|
|
180
165
|
sort: args.sort,
|
|
@@ -229,17 +214,20 @@ async function updateVersion(args) {
|
|
|
229
214
|
equals: args.id
|
|
230
215
|
}
|
|
231
216
|
};
|
|
217
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
232
218
|
const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {
|
|
233
219
|
body: {
|
|
234
220
|
collection: args.collection,
|
|
235
221
|
contentSystemId: this.contentSystemId,
|
|
236
222
|
createOnMissing: false,
|
|
223
|
+
locale,
|
|
237
224
|
versionDoc: {
|
|
238
225
|
version: dataToContentAPI(this.payload, args.collection, args.versionData)
|
|
239
226
|
},
|
|
240
227
|
where: convertPayloadWhereToContentAPI(where),
|
|
241
228
|
...buildMeta(this.payload, {
|
|
242
229
|
collection: args.collection,
|
|
230
|
+
locale,
|
|
243
231
|
where
|
|
244
232
|
})
|
|
245
233
|
}
|
|
@@ -260,13 +248,16 @@ async function deleteVersions(args) {
|
|
|
260
248
|
if (!args.collection) {
|
|
261
249
|
throw new Error('deleteVersions requires a collection');
|
|
262
250
|
}
|
|
251
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
263
252
|
const { error } = await this.client.POST('/api/v0/document_versions:delete', {
|
|
264
253
|
body: {
|
|
265
254
|
collection: args.collection,
|
|
266
255
|
contentSystemId: this.contentSystemId,
|
|
256
|
+
locale,
|
|
267
257
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
268
258
|
...buildMeta(this.payload, {
|
|
269
259
|
collection: args.collection,
|
|
260
|
+
locale,
|
|
270
261
|
where: args.where
|
|
271
262
|
})
|
|
272
263
|
}
|
|
@@ -287,7 +278,7 @@ async function findOne(args) {
|
|
|
287
278
|
return docs[0] ?? null;
|
|
288
279
|
}
|
|
289
280
|
async function updateMany(args) {
|
|
290
|
-
const
|
|
281
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
291
282
|
const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
|
|
292
283
|
body: {
|
|
293
284
|
collection: args.collection,
|
|
@@ -295,11 +286,13 @@ async function updateMany(args) {
|
|
|
295
286
|
createOnMissing: false,
|
|
296
287
|
doc: dataToContentAPI(this.payload, args.collection, args.data),
|
|
297
288
|
limit: args.limit,
|
|
289
|
+
locale,
|
|
298
290
|
returning: {},
|
|
299
|
-
sort:
|
|
291
|
+
sort: addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection),
|
|
300
292
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
301
293
|
...buildMeta(this.payload, {
|
|
302
294
|
collection: args.collection,
|
|
295
|
+
locale,
|
|
303
296
|
where: args.where
|
|
304
297
|
})
|
|
305
298
|
}
|
|
@@ -316,6 +309,7 @@ async function updateMany(args) {
|
|
|
316
309
|
return null;
|
|
317
310
|
}
|
|
318
311
|
async function updateOne(args) {
|
|
312
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
319
313
|
const where = args.where ?? {
|
|
320
314
|
id: {
|
|
321
315
|
equals: args.id
|
|
@@ -327,10 +321,12 @@ async function updateOne(args) {
|
|
|
327
321
|
contentSystemId: this.contentSystemId,
|
|
328
322
|
createOnMissing: false,
|
|
329
323
|
doc: dataToContentAPI(this.payload, args.collection, args.data),
|
|
324
|
+
locale,
|
|
330
325
|
returning: {},
|
|
331
326
|
where: convertPayloadWhereToContentAPI(where),
|
|
332
327
|
...buildMeta(this.payload, {
|
|
333
328
|
collection: args.collection,
|
|
329
|
+
locale,
|
|
334
330
|
where
|
|
335
331
|
})
|
|
336
332
|
}
|
|
@@ -351,13 +347,16 @@ async function updateOne(args) {
|
|
|
351
347
|
return unwrapDocument(this.payload, doc, args.collection);
|
|
352
348
|
}
|
|
353
349
|
async function deleteMany(args) {
|
|
350
|
+
const locale = addFallbackLocale(args.req?.locale, this.payload);
|
|
354
351
|
const { error } = await this.client.POST('/api/v0/documents:delete', {
|
|
355
352
|
body: {
|
|
356
353
|
collection: args.collection,
|
|
357
354
|
contentSystemId: this.contentSystemId,
|
|
355
|
+
locale,
|
|
358
356
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
359
357
|
...buildMeta(this.payload, {
|
|
360
358
|
collection: args.collection,
|
|
359
|
+
locale,
|
|
361
360
|
where: args.where
|
|
362
361
|
})
|
|
363
362
|
}
|
|
@@ -367,14 +366,17 @@ async function deleteMany(args) {
|
|
|
367
366
|
}
|
|
368
367
|
}
|
|
369
368
|
async function deleteOne(args) {
|
|
369
|
+
const locale = addFallbackLocale(args.req?.locale, this.payload);
|
|
370
370
|
const { data: response, error } = await this.client.POST('/api/v0/documents:delete', {
|
|
371
371
|
body: {
|
|
372
372
|
collection: args.collection,
|
|
373
373
|
contentSystemId: this.contentSystemId,
|
|
374
|
+
locale,
|
|
374
375
|
returning: {},
|
|
375
376
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
376
377
|
...buildMeta(this.payload, {
|
|
377
378
|
collection: args.collection,
|
|
379
|
+
locale,
|
|
378
380
|
where: args.where
|
|
379
381
|
})
|
|
380
382
|
}
|
|
@@ -392,18 +394,26 @@ async function deleteOne(args) {
|
|
|
392
394
|
return unwrapDocument(this.payload, doc, args.collection);
|
|
393
395
|
}
|
|
394
396
|
async function create(args) {
|
|
395
|
-
const
|
|
397
|
+
const isGlobalCollection = args.collection.startsWith('_global-');
|
|
398
|
+
const customIDType = this.payload.collections[args.collection]?.customIDType;
|
|
399
|
+
const id = (isGlobalCollection || customIDType || this.allowIDOnCreate) && args.data.id != null && (typeof args.data.id === 'string' || typeof args.data.id === 'number') ? String(args.data.id) : uuid();
|
|
400
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
396
401
|
const { data: response, error } = await this.client.POST('/api/v0/documents:create', {
|
|
397
402
|
body: {
|
|
398
403
|
collection: args.collection,
|
|
399
404
|
contentSystemId: this.contentSystemId,
|
|
400
405
|
doc: {
|
|
401
|
-
id: String(id),
|
|
402
406
|
...dataToContentAPI(this.payload, args.collection, args.data, {
|
|
403
407
|
applyDefaults: true,
|
|
404
408
|
createdAt: true
|
|
405
|
-
})
|
|
406
|
-
|
|
409
|
+
}),
|
|
410
|
+
id
|
|
411
|
+
},
|
|
412
|
+
locale,
|
|
413
|
+
...buildMeta(this.payload, {
|
|
414
|
+
collection: args.collection,
|
|
415
|
+
locale
|
|
416
|
+
})
|
|
407
417
|
}
|
|
408
418
|
});
|
|
409
419
|
if (error) {
|
|
@@ -414,14 +424,34 @@ async function create(args) {
|
|
|
414
424
|
}
|
|
415
425
|
return unwrapDocument(this.payload, response.result, args.collection);
|
|
416
426
|
}
|
|
427
|
+
async function clearDatabase() {
|
|
428
|
+
this.payload.logger.info(`---- CLEARING CONTENT API DATABASE ----`);
|
|
429
|
+
try {
|
|
430
|
+
await fetch(`${this.url}/dev/clear-db`, {
|
|
431
|
+
headers: {
|
|
432
|
+
'Content-Type': 'application/json'
|
|
433
|
+
},
|
|
434
|
+
method: 'POST'
|
|
435
|
+
});
|
|
436
|
+
this.payload.logger.info('---- CONTENT API DATABASE CLEARED ----');
|
|
437
|
+
// Re-sync collections after clearing
|
|
438
|
+
await syncCollections.call(this);
|
|
439
|
+
} catch (error) {
|
|
440
|
+
this.payload.logger.error(`Failed to clear database: ${error.message}`);
|
|
441
|
+
throw error;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
417
444
|
async function count(args) {
|
|
445
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
418
446
|
const { data: response, error } = await this.client.POST('/api/v0/documents:count', {
|
|
419
447
|
body: {
|
|
420
448
|
collection: args.collection,
|
|
421
449
|
contentSystemId: this.contentSystemId,
|
|
450
|
+
locale,
|
|
422
451
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
423
452
|
...buildMeta(this.payload, {
|
|
424
453
|
collection: args.collection,
|
|
454
|
+
locale,
|
|
425
455
|
where: args.where
|
|
426
456
|
})
|
|
427
457
|
}
|
|
@@ -437,13 +467,16 @@ async function count(args) {
|
|
|
437
467
|
};
|
|
438
468
|
}
|
|
439
469
|
async function countVersions(args) {
|
|
470
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
440
471
|
const { data: response, error } = await this.client.POST('/api/v0/document_versions:count', {
|
|
441
472
|
body: {
|
|
442
473
|
collection: args.collection,
|
|
443
474
|
contentSystemId: this.contentSystemId,
|
|
475
|
+
locale,
|
|
444
476
|
where: convertPayloadWhereToContentAPI(args.where),
|
|
445
477
|
...buildMeta(this.payload, {
|
|
446
478
|
collection: args.collection,
|
|
479
|
+
locale,
|
|
447
480
|
where: args.where
|
|
448
481
|
})
|
|
449
482
|
}
|
|
@@ -469,6 +502,7 @@ async function upsert(args) {
|
|
|
469
502
|
if (!documentId) {
|
|
470
503
|
documentId = uuid();
|
|
471
504
|
}
|
|
505
|
+
const locale = addFallbackLocale(args.locale, this.payload);
|
|
472
506
|
const { data: response, error } = await this.client.POST('/api/v0/documents:update', {
|
|
473
507
|
body: {
|
|
474
508
|
collection: args.collection,
|
|
@@ -480,7 +514,13 @@ async function upsert(args) {
|
|
|
480
514
|
applyDefaults: true,
|
|
481
515
|
createdAt: true
|
|
482
516
|
}),
|
|
483
|
-
|
|
517
|
+
locale,
|
|
518
|
+
where: convertPayloadWhereToContentAPI(args.where),
|
|
519
|
+
...buildMeta(this.payload, {
|
|
520
|
+
collection: args.collection,
|
|
521
|
+
locale,
|
|
522
|
+
where: args.where
|
|
523
|
+
})
|
|
484
524
|
}
|
|
485
525
|
});
|
|
486
526
|
if (error) {
|
|
@@ -511,6 +551,7 @@ function createGlobal(args) {
|
|
|
511
551
|
function findGlobal(args) {
|
|
512
552
|
return this.findOne({
|
|
513
553
|
collection: getGlobalSlug(args.slug),
|
|
554
|
+
locale: args.locale,
|
|
514
555
|
where: args.where ?? {}
|
|
515
556
|
});
|
|
516
557
|
}
|
|
@@ -532,6 +573,7 @@ function findGlobalVersions(args) {
|
|
|
532
573
|
return this.findVersions({
|
|
533
574
|
collection: getGlobalSlug(args.global),
|
|
534
575
|
limit: args.limit,
|
|
576
|
+
locale: args.locale,
|
|
535
577
|
page: args.page,
|
|
536
578
|
pagination: args.pagination,
|
|
537
579
|
sort: args.sort,
|
|
@@ -556,12 +598,14 @@ function updateGlobalVersion(args) {
|
|
|
556
598
|
return this.updateVersion({
|
|
557
599
|
id: args.id,
|
|
558
600
|
collection: getGlobalSlug(args.global),
|
|
601
|
+
locale: args.locale,
|
|
559
602
|
versionData: args.versionData
|
|
560
603
|
});
|
|
561
604
|
}
|
|
562
605
|
// args.where is guaranteed by Payload when args.id is undefined
|
|
563
606
|
return this.updateVersion({
|
|
564
607
|
collection: getGlobalSlug(args.global),
|
|
608
|
+
locale: args.locale,
|
|
565
609
|
versionData: args.versionData,
|
|
566
610
|
where: args.where
|
|
567
611
|
});
|
|
@@ -569,6 +613,7 @@ function updateGlobalVersion(args) {
|
|
|
569
613
|
function countGlobalVersions(args) {
|
|
570
614
|
return this.countVersions({
|
|
571
615
|
collection: getGlobalSlug(args.global),
|
|
616
|
+
locale: args.locale,
|
|
572
617
|
where: args.where
|
|
573
618
|
});
|
|
574
619
|
}
|
|
@@ -589,8 +634,10 @@ export const contentAPIAdapter = (opts)=>({
|
|
|
589
634
|
client.use(createErrorMiddleware(middlewareOpts));
|
|
590
635
|
return createDatabaseAdapter({
|
|
591
636
|
name: 'content-api',
|
|
637
|
+
allowIDOnCreate: opts.allowIDOnCreate ?? false,
|
|
592
638
|
auth: opts.auth,
|
|
593
639
|
beginTransaction: ()=>Promise.resolve(null),
|
|
640
|
+
clearDatabase: clearDatabase,
|
|
594
641
|
client,
|
|
595
642
|
commitTransaction: async ()=>{},
|
|
596
643
|
contentSystemId: opts.contentSystemId,
|
|
@@ -1 +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 { getGlobalSlug } from './temp-utilities/slug.js'\nimport { addFallbackSort } from './temp-utilities/sorting.js'\nimport { unwrapDocument, unwrapFindResponse } 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 { buildMeta } from './utilities/meta/index.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 locale,\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, versions, projection\n }: Pick<FindArgs, 'joins' | 'locale' | 'pagination' | 'sort' | 'where'> &\n Required<Pick<FindArgs, 'collection' | 'limit' | 'page'>>,\n) {\n // Use provided locale or fall back to default locale from config\n // 'all' is a special Payload value meaning \"return all locales\" - don't send to Content API\n const localization = this.payload.config.localization\n const effectiveLocale =\n locale && locale !== 'all' ? locale : localization ? localization.defaultLocale : undefined\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:find', {\n body: {\n collection,\n contentSystemId: this.contentSystemId,\n join: convertPayloadJoinsToContentAPI(this.payload, collection, joins),\n limit,\n locale: effectiveLocale && locale !== 'all' ? effectiveLocale : undefined,\n page: page ?? 1,\n sort: addFallbackSort(sort, this.payload, collection),\n where: convertPayloadWhereToContentAPI(where ?? {}),\n ...buildMeta(this.payload, { collection, locale: effectiveLocale, 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 unwrapFindResponse(this.payload, response.result, collection)\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 // TODO: FindArgs.limit should be 'number' not 'number | undefined'\n // is sanitized by Payload Core before calling the adapter (defaults to 10 or 0 based on pagination)\n limit: args.limit!,\n locale: args.locale,\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 sortWithFallback = addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection)\n\n const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {\n parentToDocumentId: true,\n })\n\n // Use provided locale or fall back to default locale from config\n // 'all' is a special Payload value meaning \"return all locales\" - don't send to Content API\n const localization = this.payload.config.localization\n const effectiveLocale =\n args.locale && args.locale !== 'all'\n ? args.locale\n : localization\n ? localization.defaultLocale\n : undefined\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n // TODO: FindVersionsArgs.limit should be 'number' not 'number | undefined'\n // is sanitized by Payload Core before calling the adapter (defaults to 10 or 0 based on pagination)\n limit: args.limit!,\n locale: effectiveLocale && args.locale !== 'all' ? effectiveLocale : undefined,\n page: args.page ?? 1,\n sort: sortWithFallback,\n where: whereClause,\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale: effectiveLocale,\n where: args.where,\n }),\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 return unwrapFindResponse(this.payload, response.result, args.collection)\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\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 collection: args.collectionSlug,\n contentSystemId: this.contentSystemId,\n versionDoc: {\n latest: !args.autosave,\n parent: String(args.parent),\n version: dataToContentAPI(this.payload, args.collectionSlug, args.versionData, {\n applyDefaults: true,\n }),\n },\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 return unwrapDocument(this.payload, response.result, args.collectionSlug)\n}\n\nasync function updateVersion(this: ContentAPIAdapter, args: UpdateVersionArgs) {\n const where = args.where ?? { id: { equals: args.id } }\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n versionDoc: {\n version: dataToContentAPI(this.payload, args.collection, args.versionData),\n },\n where: convertPayloadWhereToContentAPI(where),\n ...buildMeta(this.payload, { collection: args.collection, where }),\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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 locale: args.locale,\n pagination: false,\n where: args.where,\n })\n return docs[0] ?? null\n}\n\nasync function updateMany(this: ContentAPIAdapter, args: UpdateManyArgs) {\n const sortWithFallback = addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n doc: dataToContentAPI(this.payload, args.collection, args.data),\n limit: args.limit,\n returning: {},\n sort: sortWithFallback,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 where = args.where ?? { id: { equals: args.id } }\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n doc: dataToContentAPI(this.payload, args.collection, args.data),\n returning: {},\n where: convertPayloadWhereToContentAPI(where),\n ...buildMeta(this.payload, { collection: args.collection, where }),\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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n returning: {}, // Request deleted document back\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n doc: {\n id: String(id),\n ...dataToContentAPI(this.payload, args.collection, args.data, {\n applyDefaults: true,\n createdAt: true,\n }),\n },\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 return unwrapDocument(this.payload, response.result, 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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, { collection: args.collection, where: 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 collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: { id: documentId },\n doc: dataToContentAPI(this.payload, args.collection, args.data, {\n applyDefaults: true,\n createdAt: true,\n }),\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, id: args.slug, 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(null),\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","getGlobalSlug","addFallbackSort","unwrapDocument","unwrapFindResponse","createAuthMiddleware","createErrorMiddleware","dataToContentAPI","convertPayloadJoinsToContentAPI","buildMeta","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","locale","page","pagination","sort","where","localization","effectiveLocale","defaultLocale","undefined","join","result","find","args","collectionConfig","defaultSort","findVersions","sortWithFallback","whereClause","parentToDocumentId","queryDrafts","versionsResult","latest","equals","docs","versionDoc","version","versionMeta","createVersion","collectionSlug","autosave","parent","String","versionData","applyDefaults","updateVersion","createOnMissing","doc","deleteVersions","findOne","updateMany","returning","updateOne","deleteMany","deleteOne","create","createdAt","count","totalDocs","countVersions","upsert","documentId","idClause","createGlobal","globalType","findGlobal","updateGlobal","findGlobalVersions","createGlobalVersion","globalSlug","updatedAt","updateGlobalVersion","countGlobalVersions","contentAPIAdapter","opts","name","defaultIDType","baseUrl","middlewareOpts","use","beginTransaction","Promise","resolve","commitTransaction","findDistinct","reject","packageName","rollbackTransaction"],"mappings":"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"}
|
|
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 { getGlobalSlug } from './temp-utilities/slug.js'\nimport { addFallbackSort } from './temp-utilities/sorting.js'\nimport { unwrapDocument, unwrapFindResponse } 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 { addFallbackLocale } from './utilities/locale/index.js'\nimport { buildMeta } from './utilities/meta/index.js'\nimport { convertPayloadWhereToContentAPI } from './utilities/where.js'\n\ntype ContentAPIOptions = {\n allowIDOnCreate?: boolean\n auth: AuthMode\n contentSystemId: string\n url: string\n}\n\nexport type ContentAPIAdapter = {\n auth: AuthMode\n clearDatabase: () => Promise<void>\n client: ReturnType<typeof createClient<paths>>\n contentSystemId: string\n url: string\n} & BaseDatabaseAdapter\n\nasync function syncCollections(this: ContentAPIAdapter) {\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 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 await this.clearDatabase()\n }\n\n await syncCollections.call(this)\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 locale: localeArg,\n page,\n pagination: _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, versions, projection\n }: Pick<FindArgs, 'joins' | 'locale' | 'pagination' | 'sort' | 'where'> &\n Required<Pick<FindArgs, 'collection' | 'limit' | 'page'>>,\n) {\n const locale = addFallbackLocale(localeArg, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:find', {\n body: {\n collection,\n contentSystemId: this.contentSystemId,\n join: convertPayloadJoinsToContentAPI(this.payload, collection, joins),\n limit,\n locale,\n page: page ?? 1,\n sort: addFallbackSort(sort, this.payload, collection),\n where: convertPayloadWhereToContentAPI(where ?? {}),\n ...buildMeta(this.payload, { collection, locale, 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 unwrapFindResponse(this.payload, response.result, collection)\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 // TODO: FindArgs.limit should be 'number' not 'number | undefined'\n // is sanitized by Payload Core before calling the adapter (defaults to 10 or 0 based on pagination)\n limit: args.limit!,\n locale: args.locale,\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 sortWithFallback = addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection)\n\n const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {\n parentToDocumentId: true,\n })\n const locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n // TODO: FindVersionsArgs.limit should be 'number' not 'number | undefined'\n // is sanitized by Payload Core before calling the adapter (defaults to 10 or 0 based on pagination)\n limit: args.limit!,\n locale,\n page: args.page ?? 1,\n sort: sortWithFallback,\n where: whereClause,\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 return unwrapFindResponse(this.payload, response.result, args.collection)\n}\n\nasync function queryDrafts(this: ContentAPIAdapter, args: QueryDraftsArgs) {\n const versionsResult = await this.findVersions({\n collection: args.collection,\n limit: args.limit,\n locale: args.locale,\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\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 collection: args.collectionSlug,\n contentSystemId: this.contentSystemId,\n versionDoc: {\n latest: !args.autosave,\n parent: String(args.parent),\n version: dataToContentAPI(this.payload, args.collectionSlug, args.versionData, {\n applyDefaults: true,\n }),\n },\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 return unwrapDocument(this.payload, response.result, args.collectionSlug)\n}\n\nasync function updateVersion(this: ContentAPIAdapter, args: UpdateVersionArgs) {\n const where = args.where ?? { id: { equals: args.id } }\n const locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n locale,\n versionDoc: {\n version: dataToContentAPI(this.payload, args.collection, args.versionData),\n },\n where: convertPayloadWhereToContentAPI(where),\n ...buildMeta(this.payload, { collection: args.collection, locale, where }),\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 locale = addFallbackLocale(args.locale, this.payload)\n\n const { error } = await this.client.POST('/api/v0/document_versions:delete', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n locale,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 locale: args.locale,\n pagination: false,\n where: args.where,\n })\n return docs[0] ?? null\n}\n\nasync function updateMany(this: ContentAPIAdapter, args: UpdateManyArgs) {\n const locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n doc: dataToContentAPI(this.payload, args.collection, args.data),\n limit: args.limit,\n locale,\n returning: {},\n sort: addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection),\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 locale = addFallbackLocale(args.locale, this.payload)\n const where = args.where ?? { id: { equals: args.id } }\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: false,\n doc: dataToContentAPI(this.payload, args.collection, args.data),\n locale,\n returning: {},\n where: convertPayloadWhereToContentAPI(where),\n ...buildMeta(this.payload, { collection: args.collection, locale, where }),\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 locale = addFallbackLocale(args.req?.locale, this.payload)\n\n const { error } = await this.client.POST('/api/v0/documents:delete', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n locale,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 locale = addFallbackLocale(args.req?.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:delete', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n locale,\n returning: {}, // Request deleted document back\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 isGlobalCollection = args.collection.startsWith('_global-')\n const customIDType = this.payload.collections[args.collection]?.customIDType\n const id =\n (isGlobalCollection || customIDType || this.allowIDOnCreate) &&\n args.data.id != null &&\n (typeof args.data.id === 'string' || typeof args.data.id === 'number')\n ? String(args.data.id)\n : uuid()\n const locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:create', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n doc: {\n ...dataToContentAPI(this.payload, args.collection, args.data, {\n applyDefaults: true,\n createdAt: true,\n }),\n id,\n },\n locale,\n ...buildMeta(this.payload, { collection: args.collection, locale }),\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 return unwrapDocument(this.payload, response.result, args.collection)\n}\n\nasync function clearDatabase(this: ContentAPIAdapter) {\n this.payload.logger.info(`---- CLEARING CONTENT API DATABASE ----`)\n try {\n await fetch(`${this.url}/dev/clear-db`, {\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n })\n this.payload.logger.info('---- CONTENT API DATABASE CLEARED ----')\n\n // Re-sync collections after clearing\n await syncCollections.call(this)\n } catch (error) {\n this.payload.logger.error(`Failed to clear database: ${(error as Error).message}`)\n throw error\n }\n}\n\nasync function count(this: ContentAPIAdapter, args: CountArgs) {\n const locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:count', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n locale,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/document_versions:count', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n locale,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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 locale = addFallbackLocale(args.locale, this.payload)\n\n const { data: response, error } = await this.client.POST('/api/v0/documents:update', {\n body: {\n collection: args.collection,\n contentSystemId: this.contentSystemId,\n createOnMissing: { id: documentId },\n doc: dataToContentAPI(this.payload, args.collection, args.data, {\n applyDefaults: true,\n createdAt: true,\n }),\n locale,\n where: convertPayloadWhereToContentAPI(args.where),\n ...buildMeta(this.payload, {\n collection: args.collection,\n locale,\n where: args.where,\n }),\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, id: args.slug, globalType: args.slug },\n })\n}\n\nfunction findGlobal(this: ContentAPIAdapter, args: FindGlobalArgs) {\n return this.findOne({\n collection: getGlobalSlug(args.slug),\n locale: args.locale,\n where: args.where ?? {},\n })\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 locale: args.locale,\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 locale: args.locale,\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 locale: args.locale,\n versionData: args.versionData,\n where: args.where,\n })\n}\n\nfunction countGlobalVersions(this: ContentAPIAdapter, args: CountGlobalVersionArgs) {\n return this.countVersions({\n collection: getGlobalSlug(args.global),\n locale: args.locale,\n where: args.where,\n })\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 allowIDOnCreate: opts.allowIDOnCreate ?? false,\n auth: opts.auth,\n beginTransaction: () => Promise.resolve(null),\n clearDatabase: clearDatabase as () => Promise<void>,\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","getGlobalSlug","addFallbackSort","unwrapDocument","unwrapFindResponse","createAuthMiddleware","createErrorMiddleware","dataToContentAPI","convertPayloadJoinsToContentAPI","addFallbackLocale","buildMeta","convertPayloadWhereToContentAPI","syncCollections","existingIds","data","response","error","client","GET","params","path","contentSystemId","Error","JSON","stringify","Set","map","c","id","payload","logger","info","size","warn","message","collection","config","collections","has","slug","createCollection","call","global","globals","globalId","init","auth","mode","process","env","PAYLOAD_DROP_DATABASE","clearDatabase","collectionId","POST","body","errorMessage","includes","findMany","joins","limit","locale","localeArg","page","pagination","_pagination","sort","where","join","result","find","args","collectionConfig","defaultSort","findVersions","sortWithFallback","whereClause","parentToDocumentId","queryDrafts","versionsResult","latest","equals","docs","versionDoc","version","versionMeta","createVersion","collectionSlug","autosave","parent","String","versionData","applyDefaults","updateVersion","createOnMissing","doc","deleteVersions","findOne","updateMany","returning","updateOne","deleteMany","req","deleteOne","create","isGlobalCollection","startsWith","customIDType","allowIDOnCreate","createdAt","fetch","url","headers","method","count","totalDocs","countVersions","upsert","documentId","idClause","createGlobal","globalType","findGlobal","updateGlobal","findGlobalVersions","createGlobalVersion","globalSlug","updatedAt","updateGlobalVersion","undefined","countGlobalVersions","contentAPIAdapter","opts","name","defaultIDType","baseUrl","middlewareOpts","use","beginTransaction","Promise","resolve","commitTransaction","findDistinct","reject","packageName","rollbackTransaction"],"mappings":"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"}
|