UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

119 lines (118 loc) • 14.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _executeAccess = /*#__PURE__*/ _interop_require_default(require("../../auth/executeAccess")); const _combineQueries = require("../../database/combineQueries"); const _validateQueryPaths = require("../../database/queryValidation/validateQueryPaths"); const _afterRead = require("../../fields/hooks/afterRead"); const _commitTransaction = require("../../utilities/commitTransaction"); const _initTransaction = require("../../utilities/initTransaction"); const _killTransaction = require("../../utilities/killTransaction"); const _sanitizeInternalFields = /*#__PURE__*/ _interop_require_default(require("../../utilities/sanitizeInternalFields")); const _buildGlobalFields = require("../../versions/buildGlobalFields"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function findVersions(args) { const { depth, globalConfig, limit, overrideAccess, page, req: { fallbackLocale, locale, payload }, req, showHiddenFields, sort, where } = args; const versionFields = (0, _buildGlobalFields.buildVersionGlobalFields)(globalConfig); try { const shouldCommit = await (0, _initTransaction.initTransaction)(req); // ///////////////////////////////////// // Access // ///////////////////////////////////// const accessResults = !overrideAccess ? await (0, _executeAccess.default)({ req }, globalConfig.access.readVersions) : true; await (0, _validateQueryPaths.validateQueryPaths)({ globalConfig, overrideAccess, req, versionFields, where }); const fullWhere = (0, _combineQueries.combineQueries)(where, accessResults); // ///////////////////////////////////// // Find // ///////////////////////////////////// const paginatedDocs = await payload.db.findGlobalVersions({ global: globalConfig.slug, limit: limit ?? 10, locale, page: page || 1, req, sort, where: fullWhere }); // ///////////////////////////////////// // afterRead - Fields // ///////////////////////////////////// let result = { ...paginatedDocs, docs: await Promise.all(paginatedDocs.docs.map(async (data)=>({ ...data, version: await (0, _afterRead.afterRead)({ collection: null, context: req.context, depth, doc: { ...data.version, // Patch globalType onto version doc globalType: globalConfig.slug }, fallbackLocale, findMany: true, global: globalConfig, locale, overrideAccess, req, showHiddenFields }) }))) }; // ///////////////////////////////////// // afterRead - Global // ///////////////////////////////////// result = { ...result, docs: await Promise.all(result.docs.map(async (doc)=>{ const docRef = doc; await globalConfig.hooks.afterRead.reduce(async (priorHook, hook)=>{ await priorHook; docRef.version = await hook({ context: req.context, doc: doc.version, findMany: true, global: globalConfig, query: fullWhere, req }) || doc.version; }, Promise.resolve()); return docRef; })) }; // ///////////////////////////////////// // Return results // ///////////////////////////////////// result = { ...result, docs: result.docs.map((doc)=>(0, _sanitizeInternalFields.default)(doc)) }; if (shouldCommit) await (0, _commitTransaction.commitTransaction)(req); return result; } catch (error) { await (0, _killTransaction.killTransaction)(req); throw error; } } const _default = findVersions; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvZmluZFZlcnNpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFR5cGVXaXRoVmVyc2lvbiB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCBleGVjdXRlQWNjZXNzIGZyb20gJy4uLy4uL2F1dGgvZXhlY3V0ZUFjY2VzcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyB2YWxpZGF0ZVF1ZXJ5UGF0aHMgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9xdWVyeVZhbGlkYXRpb24vdmFsaWRhdGVRdWVyeVBhdGhzJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZCdcbmltcG9ydCB7IGNvbW1pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbW1pdFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgaW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2luaXRUcmFuc2FjdGlvbidcbmltcG9ydCB7IGtpbGxUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9raWxsVHJhbnNhY3Rpb24nXG5pbXBvcnQgc2FuaXRpemVJbnRlcm5hbEZpZWxkcyBmcm9tICcuLi8uLi91dGlsaXRpZXMvc2FuaXRpemVJbnRlcm5hbEZpZWxkcydcbmltcG9ydCB7IGJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2J1aWxkR2xvYmFsRmllbGRzJ1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudHMgPSB7XG4gIGRlcHRoPzogbnVtYmVyXG4gIGdsb2JhbENvbmZpZzogU2FuaXRpemVkR2xvYmFsQ29uZmlnXG4gIGxpbWl0PzogbnVtYmVyXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICBwYWdlPzogbnVtYmVyXG4gIHJlcT86IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG4gIHNvcnQ/OiBzdHJpbmdcbiAgd2hlcmU/OiBXaGVyZVxufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5kVmVyc2lvbnM8VCBleHRlbmRzIFR5cGVXaXRoVmVyc2lvbjxUPj4oXG4gIGFyZ3M6IEFyZ3VtZW50cyxcbik6IFByb21pc2U8UGFnaW5hdGVkRG9jczxUPj4ge1xuICBjb25zdCB7XG4gICAgZGVwdGgsXG4gICAgZ2xvYmFsQ29uZmlnLFxuICAgIGxpbWl0LFxuICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgIHBhZ2UsXG4gICAgcmVxOiB7IGZhbGxiYWNrTG9jYWxlLCBsb2NhbGUsIHBheWxvYWQgfSxcbiAgICByZXEsXG4gICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICBzb3J0LFxuICAgIHdoZXJlLFxuICB9ID0gYXJnc1xuXG4gIGNvbnN0IHZlcnNpb25GaWVsZHMgPSBidWlsZFZlcnNpb25HbG9iYWxGaWVsZHMoZ2xvYmFsQ29uZmlnKVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBBY2Nlc3NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBhY2Nlc3NSZXN1bHRzID0gIW92ZXJyaWRlQWNjZXNzXG4gICAgICA/IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyByZXEgfSwgZ2xvYmFsQ29uZmlnLmFjY2Vzcy5yZWFkVmVyc2lvbnMpXG4gICAgICA6IHRydWVcblxuICAgIGF3YWl0IHZhbGlkYXRlUXVlcnlQYXRocyh7XG4gICAgICBnbG9iYWxDb25maWcsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICAgIHZlcnNpb25GaWVsZHMsXG4gICAgICB3aGVyZSxcbiAgICB9KVxuXG4gICAgY29uc3QgZnVsbFdoZXJlID0gY29tYmluZVF1ZXJpZXMod2hlcmUsIGFjY2Vzc1Jlc3VsdHMpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRmluZFxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHBhZ2luYXRlZERvY3MgPSBhd2FpdCBwYXlsb2FkLmRiLmZpbmRHbG9iYWxWZXJzaW9uczxUPih7XG4gICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZy5zbHVnLFxuICAgICAgbGltaXQ6IGxpbWl0ID8/IDEwLFxuICAgICAgbG9jYWxlLFxuICAgICAgcGFnZTogcGFnZSB8fCAxLFxuICAgICAgcmVxLFxuICAgICAgc29ydCxcbiAgICAgIHdoZXJlOiBmdWxsV2hlcmUsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBGaWVsZHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgLi4ucGFnaW5hdGVkRG9jcyxcbiAgICAgIGRvY3M6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBwYWdpbmF0ZWREb2NzLmRvY3MubWFwKGFzeW5jIChkYXRhKSA9PiAoe1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgdmVyc2lvbjogYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IG51bGwsXG4gICAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZG9jOiB7XG4gICAgICAgICAgICAgIC4uLmRhdGEudmVyc2lvbixcbiAgICAgICAgICAgICAgLy8gUGF0Y2ggZ2xvYmFsVHlwZSBvbnRvIHZlcnNpb24gZG9jXG4gICAgICAgICAgICAgIGdsb2JhbFR5cGU6IGdsb2JhbENvbmZpZy5zbHVnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgZmluZE1hbnk6IHRydWUsXG4gICAgICAgICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9IGFzIFBhZ2luYXRlZERvY3M8VD5cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBHbG9iYWxcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICByZXN1bHQgPSB7XG4gICAgICAuLi5yZXN1bHQsXG4gICAgICBkb2NzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcmVzdWx0LmRvY3MubWFwKGFzeW5jIChkb2MpID0+IHtcbiAgICAgICAgICBjb25zdCBkb2NSZWYgPSBkb2NcblxuICAgICAgICAgIGF3YWl0IGdsb2JhbENvbmZpZy5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgICAgICBkb2NSZWYudmVyc2lvbiA9XG4gICAgICAgICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICAgICAgICBkb2M6IGRvYy52ZXJzaW9uLFxuICAgICAgICAgICAgICAgIGZpbmRNYW55OiB0cnVlLFxuICAgICAgICAgICAgICAgIGdsb2JhbDogZ2xvYmFsQ29uZmlnLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiBmdWxsV2hlcmUsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KSkgfHwgZG9jLnZlcnNpb25cbiAgICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICAgIHJldHVybiBkb2NSZWZcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXR1cm4gcmVzdWx0c1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIGRvY3M6IHJlc3VsdC5kb2NzLm1hcCgoZG9jKSA9PiBzYW5pdGl6ZUludGVybmFsRmllbGRzPFQ+KGRvYykpLFxuICAgIH1cblxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IGNvbW1pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIHJldHVybiByZXN1bHRcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBhd2FpdCBraWxsVHJhbnNhY3Rpb24ocmVxKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZmluZFZlcnNpb25zXG4iXSwibmFtZXMiOlsiZmluZFZlcnNpb25zIiwiYXJncyIsImRlcHRoIiwiZ2xvYmFsQ29uZmlnIiwibGltaXQiLCJvdmVycmlkZUFjY2VzcyIsInBhZ2UiLCJyZXEiLCJmYWxsYmFja0xvY2FsZSIsImxvY2FsZSIsInBheWxvYWQiLCJzaG93SGlkZGVuRmllbGRzIiwic29ydCIsIndoZXJlIiwidmVyc2lvbkZpZWxkcyIsImJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyIsInNob3VsZENvbW1pdCIsImluaXRUcmFuc2FjdGlvbiIsImFjY2Vzc1Jlc3VsdHMiLCJleGVjdXRlQWNjZXNzIiwiYWNjZXNzIiwicmVhZFZlcnNpb25zIiwidmFsaWRhdGVRdWVyeVBhdGhzIiwiZnVsbFdoZXJlIiwiY29tYmluZVF1ZXJpZXMiLCJwYWdpbmF0ZWREb2NzIiwiZGIiLCJmaW5kR2xvYmFsVmVyc2lvbnMiLCJnbG9iYWwiLCJzbHVnIiwicmVzdWx0IiwiZG9jcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkYXRhIiwidmVyc2lvbiIsImFmdGVyUmVhZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZG9jIiwiZ2xvYmFsVHlwZSIsImZpbmRNYW55IiwiZG9jUmVmIiwiaG9va3MiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJob29rIiwicXVlcnkiLCJyZXNvbHZlIiwic2FuaXRpemVJbnRlcm5hbEZpZWxkcyIsImNvbW1pdFRyYW5zYWN0aW9uIiwiZXJyb3IiLCJraWxsVHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBOEpBOzs7ZUFBQTs7O3NFQXhKMEI7Z0NBQ0s7b0NBQ0k7MkJBQ1Q7bUNBQ1E7aUNBQ0Y7aUNBQ0E7K0VBQ0c7bUNBQ007Ozs7OztBQWN6QyxlQUFlQSxhQUNiQyxJQUFlO0lBRWYsTUFBTSxFQUNKQyxLQUFLLEVBQ0xDLFlBQVksRUFDWkMsS0FBSyxFQUNMQyxjQUFjLEVBQ2RDLElBQUksRUFDSkMsS0FBSyxFQUFFQyxjQUFjLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEVBQ3hDSCxHQUFHLEVBQ0hJLGdCQUFnQixFQUNoQkMsSUFBSSxFQUNKQyxLQUFL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