payload 1.1.5 → 1.1.7
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/admin/api.js +8 -3
- package/dist/admin/components/elements/Autosave/index.js +2 -0
- package/dist/admin/components/elements/FileDetails/index.js +1 -1
- package/dist/admin/components/elements/RenderTitle/index.js +1 -4
- package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +2 -2
- package/dist/admin/components/forms/field-types/Relationship/index.js +3 -3
- package/dist/admin/components/forms/field-types/RichText/RichText.js +25 -2
- package/dist/admin/components/forms/field-types/RichText/index.scss +24 -0
- package/dist/admin/components/forms/field-types/Select/index.js +2 -2
- package/dist/admin/components/forms/field-types/Textarea/index.scss +1 -0
- package/dist/admin/components/forms/field-types/Upload/Input.js +1 -1
- package/dist/admin/components/forms/field-types/Upload/index.scss +4 -4
- package/dist/admin/components/utilities/DocumentInfo/index.js +3 -3
- package/dist/admin/components/views/Verify/index.js +1 -1
- package/dist/admin/components/views/Version/Compare/index.js +1 -1
- package/dist/admin/components/views/collections/Edit/Auth/index.js +1 -0
- package/dist/admin/components/views/collections/List/RelationshipProvider/index.js +1 -1
- package/dist/admin/scss/app.scss +1 -0
- package/dist/auth/operations/access.js +3 -3
- package/dist/collections/config/types.d.ts +1 -1
- package/dist/collections/operations/create.js +12 -4
- package/dist/collections/operations/find.js +9 -2
- package/dist/collections/operations/findByID.js +2 -1
- package/dist/collections/operations/findVersions.js +9 -2
- package/dist/collections/operations/update.js +12 -4
- package/dist/fields/hooks/afterRead/promise.js +3 -3
- package/dist/globals/operations/findOne.js +2 -1
- package/dist/globals/operations/findVersions.js +9 -2
- package/dist/mongoose/buildSortParam.d.ts +11 -1
- package/dist/mongoose/buildSortParam.js +13 -3
- package/dist/mongoose/getLocalizedSortProperty.d.ts +11 -0
- package/dist/mongoose/getLocalizedSortProperty.js +69 -0
- package/dist/mongoose/getLocalizedSortProperty.spec.d.ts +1 -0
- package/dist/mongoose/getLocalizedSortProperty.spec.js +167 -0
- package/dist/uploads/{uploadFile.d.ts → generateFileData.d.ts} +7 -2
- package/dist/uploads/generateFileData.js +101 -0
- package/dist/uploads/imageResizer.d.ts +6 -2
- package/dist/uploads/imageResizer.js +25 -19
- package/dist/uploads/types.d.ts +4 -0
- package/dist/uploads/uploadFiles.d.ts +3 -0
- package/dist/uploads/uploadFiles.js +21 -0
- package/dist/utilities/flattenTopLevelFields.js +2 -2
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +2 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +51 -50
- package/docs/authentication/config.mdx +2 -0
- package/docs/rest-api/overview.mdx +15 -13
- package/package.json +1 -1
- package/CHANGELOG.md +0 -1957
- package/dist/uploads/uploadFile.js +0 -92
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateFileData = void 0;
|
|
7
|
+
const file_type_1 = require("file-type");
|
|
8
|
+
const mkdirp_1 = __importDefault(require("mkdirp"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const sanitize_filename_1 = __importDefault(require("sanitize-filename"));
|
|
11
|
+
const sharp_1 = __importDefault(require("sharp"));
|
|
12
|
+
const errors_1 = require("../errors");
|
|
13
|
+
const getImageSize_1 = __importDefault(require("./getImageSize"));
|
|
14
|
+
const getSafeFilename_1 = __importDefault(require("./getSafeFilename"));
|
|
15
|
+
const imageResizer_1 = __importDefault(require("./imageResizer"));
|
|
16
|
+
const canResizeImage_1 = __importDefault(require("./canResizeImage"));
|
|
17
|
+
const generateFileData = async ({ config, collection: { config: collectionConfig, Model, }, req, data, throwOnMissingFile, overwriteExistingFiles, }) => {
|
|
18
|
+
var _a;
|
|
19
|
+
let newData = data;
|
|
20
|
+
const filesToSave = [];
|
|
21
|
+
if (collectionConfig.upload) {
|
|
22
|
+
const fileData = {};
|
|
23
|
+
const { staticDir, imageSizes, disableLocalStorage, resizeOptions, formatOptions } = collectionConfig.upload;
|
|
24
|
+
const { file } = req.files || {};
|
|
25
|
+
if (throwOnMissingFile && !file) {
|
|
26
|
+
throw new errors_1.MissingFile();
|
|
27
|
+
}
|
|
28
|
+
let staticPath = staticDir;
|
|
29
|
+
if (staticDir.indexOf('/') !== 0) {
|
|
30
|
+
staticPath = path_1.default.resolve(config.paths.configDir, staticDir);
|
|
31
|
+
}
|
|
32
|
+
if (!disableLocalStorage) {
|
|
33
|
+
mkdirp_1.default.sync(staticPath);
|
|
34
|
+
}
|
|
35
|
+
if (file) {
|
|
36
|
+
try {
|
|
37
|
+
const shouldResize = (0, canResizeImage_1.default)(file.mimetype);
|
|
38
|
+
let fsSafeName;
|
|
39
|
+
let resized;
|
|
40
|
+
let dimensions;
|
|
41
|
+
if (shouldResize) {
|
|
42
|
+
if (resizeOptions) {
|
|
43
|
+
resized = (0, sharp_1.default)(file.data)
|
|
44
|
+
.resize(resizeOptions);
|
|
45
|
+
}
|
|
46
|
+
if (formatOptions) {
|
|
47
|
+
resized = (resized !== null && resized !== void 0 ? resized : (0, sharp_1.default)(file.data)).toFormat(formatOptions.format, formatOptions.options);
|
|
48
|
+
}
|
|
49
|
+
dimensions = await (0, getImageSize_1.default)(file);
|
|
50
|
+
fileData.width = dimensions.width;
|
|
51
|
+
fileData.height = dimensions.height;
|
|
52
|
+
}
|
|
53
|
+
const fileBuffer = resized ? (await resized.toBuffer()) : file.data;
|
|
54
|
+
const bufferInfo = await (0, file_type_1.fromBuffer)(fileBuffer);
|
|
55
|
+
const mime = (_a = bufferInfo.mime) !== null && _a !== void 0 ? _a : file.mimetype;
|
|
56
|
+
const ext = resized ? bufferInfo.ext : file.name.split('.').pop();
|
|
57
|
+
const fileSize = fileBuffer.length;
|
|
58
|
+
const baseFilename = (0, sanitize_filename_1.default)(file.name.substring(0, file.name.lastIndexOf('.')) || file.name);
|
|
59
|
+
fsSafeName = `${baseFilename}.${ext}`;
|
|
60
|
+
if (!overwriteExistingFiles) {
|
|
61
|
+
fsSafeName = await (0, getSafeFilename_1.default)(Model, staticPath, fsSafeName);
|
|
62
|
+
}
|
|
63
|
+
filesToSave.push({
|
|
64
|
+
path: `${staticPath}/${fsSafeName}`,
|
|
65
|
+
buffer: fileBuffer,
|
|
66
|
+
});
|
|
67
|
+
fileData.filename = fsSafeName || (!overwriteExistingFiles ? await (0, getSafeFilename_1.default)(Model, staticPath, file.name) : file.name);
|
|
68
|
+
fileData.filesize = fileSize || file.size;
|
|
69
|
+
fileData.mimeType = mime || (await (0, file_type_1.fromBuffer)(file.data)).mime;
|
|
70
|
+
if (Array.isArray(imageSizes) && shouldResize) {
|
|
71
|
+
req.payloadUploadSizes = {};
|
|
72
|
+
const { sizeData, sizesToSave } = await (0, imageResizer_1.default)({
|
|
73
|
+
req,
|
|
74
|
+
file: file.data,
|
|
75
|
+
dimensions,
|
|
76
|
+
staticPath,
|
|
77
|
+
config: collectionConfig,
|
|
78
|
+
savedFilename: fsSafeName || file.name,
|
|
79
|
+
mimeType: fileData.mimeType,
|
|
80
|
+
});
|
|
81
|
+
fileData.sizes = sizeData;
|
|
82
|
+
filesToSave.push(...sizesToSave);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
console.error(err);
|
|
87
|
+
throw new errors_1.FileUploadError();
|
|
88
|
+
}
|
|
89
|
+
newData = {
|
|
90
|
+
...newData,
|
|
91
|
+
...fileData,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
data: newData,
|
|
97
|
+
files: filesToSave,
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
exports.generateFileData = generateFileData;
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVGaWxlRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QixnREFBd0I7QUFDeEIsMEVBQXlDO0FBQ3pDLGtEQUFxQztBQUdyQyxzQ0FBeUQ7QUFFekQsa0VBQStEO0FBQy9ELHdFQUFnRDtBQUNoRCxrRUFBMkM7QUFFM0Msc0VBQThDO0FBZ0J2QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxFQUNyQyxNQUFNLEVBQ04sVUFBVSxFQUFFLEVBQ1YsTUFBTSxFQUFFLGdCQUFnQixFQUN4QixLQUFLLEdBQ04sRUFDRCxHQUFHLEVBQ0gsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixzQkFBc0IsR0FDakIsRUFBVSxFQUFFOztJQUNqQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtRQUMzQixNQUFNLFFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFFN0csTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksa0JBQWtCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDL0IsTUFBTSxJQUFJLG9CQUFXLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxjQUFJLENBQUMs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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { SanitizedCollectionConfig } from '../collections/config/types';
|
|
3
3
|
import { PayloadRequest } from '../express/types';
|
|
4
4
|
import { ProbedImageSize } from './getImageSize';
|
|
5
|
-
import { FileSizes } from './types';
|
|
5
|
+
import { FileSizes, FileToSave } from './types';
|
|
6
6
|
declare type Args = {
|
|
7
7
|
req: PayloadRequest;
|
|
8
8
|
file: Buffer;
|
|
@@ -12,5 +12,9 @@ declare type Args = {
|
|
|
12
12
|
savedFilename: string;
|
|
13
13
|
mimeType: string;
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
declare type Result = Promise<{
|
|
16
|
+
sizeData: FileSizes;
|
|
17
|
+
sizesToSave: FileToSave[];
|
|
18
|
+
}>;
|
|
19
|
+
export default function resizeAndSave({ req, file, dimensions, staticPath, config, savedFilename, }: Args): Promise<Result>;
|
|
16
20
|
export {};
|
|
@@ -19,7 +19,8 @@ function getOutputImage(sourceImage, size) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
async function resizeAndSave({ req, file, dimensions, staticPath, config, savedFilename, }) {
|
|
22
|
-
const { imageSizes
|
|
22
|
+
const { imageSizes } = config.upload;
|
|
23
|
+
const sizesToSave = [];
|
|
23
24
|
const sizes = imageSizes
|
|
24
25
|
.filter((desiredSize) => needsResize(desiredSize, dimensions))
|
|
25
26
|
.map(async (desiredSize) => {
|
|
@@ -31,43 +32,48 @@ async function resizeAndSave({ req, file, dimensions, staticPath, config, savedF
|
|
|
31
32
|
resolveWithObject: true,
|
|
32
33
|
});
|
|
33
34
|
req.payloadUploadSizes[desiredSize.name] = bufferObject.data;
|
|
35
|
+
const mimeType = (await (0, file_type_1.fromBuffer)(bufferObject.data));
|
|
34
36
|
const outputImage = getOutputImage(savedFilename, desiredSize);
|
|
35
|
-
const imageNameWithDimensions = createImageName(outputImage, bufferObject);
|
|
37
|
+
const imageNameWithDimensions = createImageName(outputImage, bufferObject, mimeType.ext);
|
|
36
38
|
const imagePath = `${staticPath}/${imageNameWithDimensions}`;
|
|
37
39
|
const fileAlreadyExists = await (0, fileExists_1.default)(imagePath);
|
|
38
40
|
if (fileAlreadyExists) {
|
|
39
41
|
fs_1.default.unlinkSync(imagePath);
|
|
40
42
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
sizesToSave.push({
|
|
44
|
+
path: imagePath,
|
|
45
|
+
buffer: bufferObject.data,
|
|
46
|
+
});
|
|
44
47
|
return {
|
|
45
48
|
name: desiredSize.name,
|
|
46
49
|
width: bufferObject.info.width,
|
|
47
50
|
height: bufferObject.info.height,
|
|
48
51
|
filename: imageNameWithDimensions,
|
|
49
52
|
filesize: bufferObject.info.size,
|
|
50
|
-
mimeType:
|
|
53
|
+
mimeType: mimeType.mime,
|
|
51
54
|
};
|
|
52
55
|
});
|
|
53
56
|
const savedSizes = await Promise.all(sizes);
|
|
54
|
-
return
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
return {
|
|
58
|
+
sizeData: savedSizes.reduce((results, size) => ({
|
|
59
|
+
...results,
|
|
60
|
+
[size.name]: {
|
|
61
|
+
width: size.width,
|
|
62
|
+
height: size.height,
|
|
63
|
+
filename: size.filename,
|
|
64
|
+
mimeType: size.mimeType,
|
|
65
|
+
filesize: size.filesize,
|
|
66
|
+
},
|
|
67
|
+
}), {}),
|
|
68
|
+
sizesToSave,
|
|
69
|
+
};
|
|
64
70
|
}
|
|
65
71
|
exports.default = resizeAndSave;
|
|
66
|
-
function createImageName(outputImage, bufferObject) {
|
|
67
|
-
return `${outputImage.name}-${bufferObject.info.width}x${bufferObject.info.height}.${
|
|
72
|
+
function createImageName(outputImage, bufferObject, extension) {
|
|
73
|
+
return `${outputImage.name}-${bufferObject.info.width}x${bufferObject.info.height}.${extension}`;
|
|
68
74
|
}
|
|
69
75
|
function needsResize(desiredSize, dimensions) {
|
|
70
76
|
return (typeof desiredSize.width === 'number' && desiredSize.width <= dimensions.width)
|
|
71
77
|
|| (typeof desiredSize.height === 'number' && desiredSize.height <= dimensions.height);
|
|
72
78
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VSZXNpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VwbG9hZHMvaW1hZ2VSZXNpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQXVDO0FBQ3ZDLDRDQUFvQjtBQUNwQiwwRUFBeUM7QUFDekMsa0RBQTBCO0FBRzFCLDhEQUFzQztBQTBCdEMsU0FBUyxjQUFjLENBQUMsV0FBbUIsRUFBRSxJQUFlO0lBQzFELE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBUSxFQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztJQUU3RixPQUFPO1FBQ0wsSUFBSTtRQUNKLFNBQVM7UUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRWMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxFQUMxQyxHQUFHLEVBQ0gsSUFBSSxFQUNKLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLGFBQWEsR0FDUjtJQUNMLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3JDLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7SUFFckMsTUFBTSxLQUFLLEdBQUcsVUFBVTtTQUNyQixNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDN0QsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUN6QixJQUFJLE9BQU8sR0FBRyxJQUFBLGVBQUssRUFBQyxJQUFJLENBQUMs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
|
package/dist/uploads/types.d.ts
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.uploadFiles = void 0;
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const saveBufferToFile_1 = __importDefault(require("./saveBufferToFile"));
|
|
9
|
+
const uploadFiles = async (payload, files) => {
|
|
10
|
+
try {
|
|
11
|
+
await Promise.all(files.map(async ({ buffer, path }) => {
|
|
12
|
+
await (0, saveBufferToFile_1.default)(buffer, path);
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
payload.logger.error(err);
|
|
17
|
+
throw new errors_1.FileUploadError();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.uploadFiles = uploadFiles;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkRmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBsb2Fkcy91cGxvYWRGaWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQ0FBNEM7QUFDNUMsMEVBQWtEO0FBSTNDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFFLEtBQW1CLEVBQWlCLEVBQUU7SUFDeEYsSUFBSTtRQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3JELE1BQU0sSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNMO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLElBQUksd0JBQWUsRUFBRSxDQUFDO0tBQzdCO0FBQ0gsQ0FBQyxDQUFDO0FBVFcsUUFBQSxXQUFXLGVBU3RCIn0=
|
|
@@ -21,7 +21,7 @@ const flattenFields = (fields, keepPresentationalFields) => {
|
|
|
21
21
|
...field.tabs.reduce((tabFields, tab) => {
|
|
22
22
|
return [
|
|
23
23
|
...tabFields,
|
|
24
|
-
...((0, types_1.tabHasName)(tab) ? [tab] : flattenFields(tab.fields, keepPresentationalFields)),
|
|
24
|
+
...((0, types_1.tabHasName)(tab) ? [{ ...tab, type: 'tab' }] : flattenFields(tab.fields, keepPresentationalFields)),
|
|
25
25
|
];
|
|
26
26
|
}, []),
|
|
27
27
|
];
|
|
@@ -30,4 +30,4 @@ const flattenFields = (fields, keepPresentationalFields) => {
|
|
|
30
30
|
}, []);
|
|
31
31
|
};
|
|
32
32
|
exports.default = flattenFields;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlblRvcExldmVsRmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9mbGF0dGVuVG9wTGV2ZWxGaWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrREFRZ0M7QUFFaEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFlLEVBQUUsd0JBQWtDLEVBQW9ELEVBQUU7SUFDOUgsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFDLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUEsaUNBQXlCLEVBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM3RixPQUFPO2dCQUNMLEdBQUcsV0FBVztnQkFDZCxLQUFLO2FBQ04sQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFBLHlCQUFpQixFQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVCLE9BQU87Z0JBQ0wsR0FBRyxXQUFXO2dCQUNkLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLENBQUM7YUFDekQsQ0FBQztTQUNIO1FBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN6QixPQUFPO2dCQUNMLEdBQUcsV0FBVztnQkFDZCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUN0QyxPQUFPO3dCQUNMLEdBQUcsU0FBUzt3QkFDWixHQUFHLENBQUMsSUFBQSxrQkFBVSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUM7cUJBQ3ZHLENBQUM7Z0JBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUNQLENBQUM7U0FDSDtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQztBQUVGLGtCQUFlLGFBQWEsQ0FBQyJ9
|
|
@@ -5,9 +5,10 @@ import { SanitizedGlobalConfig } from '../../globals/config/types';
|
|
|
5
5
|
declare type Arguments<T> = {
|
|
6
6
|
payload: Payload;
|
|
7
7
|
entity: SanitizedCollectionConfig | SanitizedGlobalConfig;
|
|
8
|
+
entityType: 'collection' | 'global';
|
|
8
9
|
doc: T;
|
|
9
10
|
locale: string;
|
|
10
11
|
accessResult: AccessResult;
|
|
11
12
|
};
|
|
12
|
-
declare const replaceWithDraftIfAvailable: <T extends TypeWithID>({ payload, entity, doc, locale, accessResult, }: Arguments<T>) => Promise<T>;
|
|
13
|
+
declare const replaceWithDraftIfAvailable: <T extends TypeWithID>({ payload, entity, entityType, doc, locale, accessResult, }: Arguments<T>) => Promise<T>;
|
|
13
14
|
export default replaceWithDraftIfAvailable;
|
|
@@ -8,59 +8,60 @@ const auth_1 = require("../../auth");
|
|
|
8
8
|
const flattenWhereConstraints_1 = __importDefault(require("../../utilities/flattenWhereConstraints"));
|
|
9
9
|
const sanitizeInternalFields_1 = __importDefault(require("../../utilities/sanitizeInternalFields"));
|
|
10
10
|
const appendVersionToQueryKey_1 = require("./appendVersionToQueryKey");
|
|
11
|
-
const replaceWithDraftIfAvailable = async ({ payload, entity, doc, locale, accessResult, }) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
|
|
20
|
-
equals: doc.id,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
'version._status': {
|
|
25
|
-
equals: 'draft',
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
updatedAt: {
|
|
30
|
-
greater_than: doc.updatedAt,
|
|
31
|
-
},
|
|
11
|
+
const replaceWithDraftIfAvailable = async ({ payload, entity, entityType, doc, locale, accessResult, }) => {
|
|
12
|
+
const VersionModel = payload.versions[entity.slug];
|
|
13
|
+
let useEstimatedCount = false;
|
|
14
|
+
const queryToBuild = {
|
|
15
|
+
where: {
|
|
16
|
+
and: [
|
|
17
|
+
{
|
|
18
|
+
'version._status': {
|
|
19
|
+
equals: 'draft',
|
|
32
20
|
},
|
|
33
|
-
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
if (entityType === 'collection') {
|
|
26
|
+
queryToBuild.where.and.push({
|
|
27
|
+
parent: {
|
|
28
|
+
equals: doc.id,
|
|
34
29
|
},
|
|
35
|
-
};
|
|
36
|
-
if ((0, auth_1.hasWhereAccessResult)(accessResult)) {
|
|
37
|
-
const versionAccessResult = (0, appendVersionToQueryKey_1.appendVersionToQueryKey)(accessResult);
|
|
38
|
-
queryToBuild.where.and.push(versionAccessResult);
|
|
39
|
-
}
|
|
40
|
-
const constraints = (0, flattenWhereConstraints_1.default)(queryToBuild);
|
|
41
|
-
useEstimatedCount = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'));
|
|
42
|
-
const query = await VersionModel.buildQuery(queryToBuild, locale);
|
|
43
|
-
let draft = await VersionModel.findOne(query, {}, {
|
|
44
|
-
lean: true,
|
|
45
|
-
useEstimatedCount,
|
|
46
|
-
sort: { updatedAt: 'desc' },
|
|
47
30
|
});
|
|
48
|
-
if (!draft) {
|
|
49
|
-
return doc;
|
|
50
|
-
}
|
|
51
|
-
draft = JSON.parse(JSON.stringify(draft));
|
|
52
|
-
draft = (0, sanitizeInternalFields_1.default)(draft);
|
|
53
|
-
// Disregard all other draft content at this point,
|
|
54
|
-
// Only interested in the version itself.
|
|
55
|
-
// Operations will handle firing hooks, etc.
|
|
56
|
-
return {
|
|
57
|
-
id: doc.id,
|
|
58
|
-
...draft.version,
|
|
59
|
-
createdAt: draft.createdAt,
|
|
60
|
-
updatedAt: draft.updatedAt,
|
|
61
|
-
};
|
|
62
31
|
}
|
|
63
|
-
|
|
32
|
+
if ((0, types_1.docHasTimestamps)(doc)) {
|
|
33
|
+
queryToBuild.where.and.push({
|
|
34
|
+
updatedAt: {
|
|
35
|
+
greater_than: doc.updatedAt,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if ((0, auth_1.hasWhereAccessResult)(accessResult)) {
|
|
40
|
+
const versionAccessResult = (0, appendVersionToQueryKey_1.appendVersionToQueryKey)(accessResult);
|
|
41
|
+
queryToBuild.where.and.push(versionAccessResult);
|
|
42
|
+
}
|
|
43
|
+
const constraints = (0, flattenWhereConstraints_1.default)(queryToBuild);
|
|
44
|
+
useEstimatedCount = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'));
|
|
45
|
+
const query = await VersionModel.buildQuery(queryToBuild, locale);
|
|
46
|
+
let draft = await VersionModel.findOne(query, {}, {
|
|
47
|
+
lean: true,
|
|
48
|
+
useEstimatedCount,
|
|
49
|
+
sort: { updatedAt: 'desc' },
|
|
50
|
+
});
|
|
51
|
+
if (!draft) {
|
|
52
|
+
return doc;
|
|
53
|
+
}
|
|
54
|
+
draft = JSON.parse(JSON.stringify(draft));
|
|
55
|
+
draft = (0, sanitizeInternalFields_1.default)(draft);
|
|
56
|
+
// Disregard all other draft content at this point,
|
|
57
|
+
// Only interested in the version itself.
|
|
58
|
+
// Operations will handle firing hooks, etc.
|
|
59
|
+
return {
|
|
60
|
+
id: doc.id,
|
|
61
|
+
...draft.version,
|
|
62
|
+
createdAt: draft.createdAt,
|
|
63
|
+
updatedAt: draft.updatedAt,
|
|
64
|
+
};
|
|
64
65
|
};
|
|
65
66
|
exports.default = replaceWithDraftIfAvailable;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZVdpdGhEcmFmdElmQXZhaWxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZlcnNpb25zL2RyYWZ0cy9yZXBsYWNlV2l0aERyYWZ0SWZBdmFpbGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx1Q0FBc0Q7QUFDdEQscUNBQWtEO0FBR2xELHNHQUE4RTtBQUM5RSxvR0FBNEU7QUFDNUUsdUVBQW9FO0FBWXBFLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUF3QixFQUMvRCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixHQUFHLEVBQ0gsTUFBTSxFQUNOLFlBQVksR0FDQyxFQUFjLEVBQUU7SUFDN0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFvQixDQUFDO0lBRXRFLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRTlCLE1BQU0sWUFBWSxHQUFxQjtRQUNyQyxLQUFLLEVBQUU7WUFDTCxHQUFHLEVBQUU7Z0JBQ0g7b0JBQ0UsaUJBQWlCLEVBQUU7d0JBQ2pCLE1BQU0sRUFBRSxPQUFPO3FCQUNoQjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFO1FBQy9CLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMxQixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQ2Y7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELElBQUksSUFBQSx3QkFBZ0IsRUFBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDMUIsU0FBUyxFQUFFO2dCQUNULFlBQVksRUFBRSxHQUFHLENBQUMsU0FBUzthQUM1QjtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxJQUFBLDJCQUFvQixFQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3RDLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSxpREFBdUIsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQUNsRDtJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsaUNBQXVCLEVBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFbEUsSUFBSSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDaEQsSUFBSSxFQUFFLElBQUk7UUFDVixpQkFBaUI7UUFDakIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtLQUM1QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUVELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxLQUFLLEdBQUcsSUFBQSxnQ0FBc0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUV0QyxtREFBbUQ7SUFDbkQseUNBQXlDO0lBQ3pDLDRDQUE0QztJQUM1QyxPQUFPO1FBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ1YsR0FBRyxLQUFLLENBQUMsT0FBTztRQUNoQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0tBQzNCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixrQkFBZSwyQkFBMkIsQ0FBQyJ9
|
|
@@ -57,6 +57,8 @@ const response = await fetch("http://localhost:3000/api/pages", {
|
|
|
57
57
|
});
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
Note: The label portion of the header is case-sensitive and will likely have a capitalized first character unless the label has been customized.
|
|
61
|
+
|
|
60
62
|
### Forgot Password
|
|
61
63
|
|
|
62
64
|
You can customize how the Forgot Password workflow operates with the following options on the `auth.forgotPassword` property:
|
|
@@ -22,15 +22,17 @@ All Payload API routes are mounted prefixed to your config's `routes.api` URL se
|
|
|
22
22
|
|
|
23
23
|
Each collection is mounted using its `slug` value. For example, if a collection's slug is `users`, all corresponding routes will be mounted on `/api/users`.
|
|
24
24
|
|
|
25
|
+
Note: Collection slugs must be formatted in kebab-case
|
|
26
|
+
|
|
25
27
|
**All CRUD operations are exposed as follows:**
|
|
26
28
|
|
|
27
29
|
| Method | Path | Description |
|
|
28
30
|
| -------- | --------------------------- | -------------------------------------- |
|
|
29
|
-
| `GET` | `/api/{
|
|
30
|
-
| `GET` | `/api/{
|
|
31
|
-
| `POST` | `/api/{
|
|
32
|
-
| `PATCH` | `/api/{
|
|
33
|
-
| `DELETE` | `/api/{
|
|
31
|
+
| `GET` | `/api/{collection-slug}` | Find paginated documents |
|
|
32
|
+
| `GET` | `/api/{collection-slug}/:id` | Find a specific document by ID |
|
|
33
|
+
| `POST` | `/api/{collection-slug}` | Create a new document |
|
|
34
|
+
| `PATCH` | `/api/{collection-slug}/:id` | Update a document by ID |
|
|
35
|
+
| `DELETE` | `/api/{collection-slug}/:id` | Delete an existing document by ID |
|
|
34
36
|
|
|
35
37
|
##### Additional `find` query parameters
|
|
36
38
|
|
|
@@ -47,14 +49,14 @@ Auth enabled collections are also given the following endpoints:
|
|
|
47
49
|
|
|
48
50
|
| Method | Path | Description |
|
|
49
51
|
| -------- | --------------------------- | ----------- |
|
|
50
|
-
| `POST` | `/api/{
|
|
51
|
-
| `POST` | `/api/{
|
|
52
|
-
| `POST` | `/api/{
|
|
53
|
-
| `POST` | `/api/{
|
|
54
|
-
| `POST` | `/api/{
|
|
55
|
-
| `GET` | `/api/{
|
|
56
|
-
| `POST` | `/api/{
|
|
57
|
-
| `POST` | `/api/{
|
|
52
|
+
| `POST` | `/api/{collection-slug}/verify/:token` | [Email verification](/docs/authentication/operations#verify-by-email), if enabled. |
|
|
53
|
+
| `POST` | `/api/{collection-slug}/unlock` | [Unlock a user's account](/docs/authentication/operations#unlock), if enabled. |
|
|
54
|
+
| `POST` | `/api/{collection-slug}/login` | [Logs in](/docs/authentication/operations#login) a user with email / password. |
|
|
55
|
+
| `POST` | `/api/{collection-slug}/logout` | [Logs out](/docs/authentication/operations#logout) a user. |
|
|
56
|
+
| `POST` | `/api/{collection-slug}/refresh-token` | [Refreshes a token](/docs/authentication/operations#refresh) that has not yet expired. |
|
|
57
|
+
| `GET` | `/api/{collection-slug}/me` | [Returns the currently logged in user with token](/docs/authentication/operations#me). |
|
|
58
|
+
| `POST` | `/api/{collection-slug}/forgot-password` | [Password reset workflow](/docs/authentication/operations#forgot-password) entry point. |
|
|
59
|
+
| `POST` | `/api/{collection-slug}/reset-password` | [To reset the user's password](/docs/authentication/operations#reset-password). |
|
|
58
60
|
|
|
59
61
|
## Globals
|
|
60
62
|
|