UNPKG

@contentstack/management

Version:

The Content Management API is used to manage the content of your Contentstack account

749 lines (736 loc) 31.4 kB
"use strict"; var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); Object.defineProperty(exports, "__esModule", { value: true }); exports.move = exports.fetchAll = exports.fetch = exports.deleteEntity = exports.update = exports.query = exports.create = exports.upload = exports.publishUnpublish = exports.unpublish = exports.publish = undefined; var _typeof2 = require("@babel/runtime/helpers/typeof"); var _typeof3 = (0, _interopRequireDefault2["default"])(_typeof2); var _defineProperty2 = require("@babel/runtime/helpers/defineProperty"); var _defineProperty3 = (0, _interopRequireDefault2["default"])(_defineProperty2); var _asyncToGenerator2 = require("@babel/runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = (0, _interopRequireDefault2["default"])(_asyncToGenerator2); exports.parseData = parseData; exports.get = get; exports.cleanAssets = cleanAssets; var _regenerator = require("@babel/runtime/regenerator"); var _regenerator2 = (0, _interopRequireDefault2["default"])(_regenerator); var _contentstackError = require("./core/contentstackError"); var _contentstackError2 = (0, _interopRequireDefault2["default"])(_contentstackError); var _cloneDeep = require("lodash/cloneDeep"); var _cloneDeep2 = (0, _interopRequireDefault2["default"])(_cloneDeep); var _index = require("./query/index"); var _index2 = (0, _interopRequireDefault2["default"])(_index); var _contentstackCollection = require("./contentstackCollection"); var _contentstackCollection2 = (0, _interopRequireDefault2["default"])(_contentstackCollection); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty3["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** * Creates a publish function for the specified entity type. * @param {Object} http - HTTP client instance. * @param {string} type - Entity type (e.g., 'entry', 'asset'). * @returns {Function} Async function that publishes an entity. * @example * const publishFn = publish(http, 'entry') * await publishFn.call(entryInstance, { publishDetails: {...}, locale: 'en-us' }) */ var publish = exports.publish = function publish(http, type) { return /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee(_ref) { var publishDetails, _ref$locale, locale, _ref$version, version, _ref$scheduledAt, scheduledAt, url, headers, httpBody; return _regenerator2["default"].wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: publishDetails = _ref.publishDetails, _ref$locale = _ref.locale, locale = _ref$locale === void 0 ? null : _ref$locale, _ref$version = _ref.version, version = _ref$version === void 0 ? null : _ref$version, _ref$scheduledAt = _ref.scheduledAt, scheduledAt = _ref$scheduledAt === void 0 ? null : _ref$scheduledAt; url = this.urlPath + '/publish'; headers = { headers: _objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)) } || {}; httpBody = {}; httpBody[type] = (0, _cloneDeep2["default"])(publishDetails); return _context.abrupt("return", publishUnpublish(http, url, httpBody, headers, locale, version, scheduledAt)); case 1: case "end": return _context.stop(); } }, _callee, this); })); return function (_x) { return _ref2.apply(this, arguments); }; }(); }; /** * Creates an unpublish function for the specified entity type. * @param {Object} http - HTTP client instance. * @param {string} type - Entity type (e.g., 'entry', 'asset'). * @returns {Function} Async function that unpublishes an entity. * @example * const unpublishFn = unpublish(http, 'entry') * await unpublishFn.call(entryInstance, { publishDetails: {...}, locale: 'en-us' }) */ var unpublish = exports.unpublish = function unpublish(http, type) { return /*#__PURE__*/function () { var _ref4 = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee2(_ref3) { var publishDetails, _ref3$locale, locale, _ref3$version, version, _ref3$scheduledAt, scheduledAt, url, headers, httpBody; return _regenerator2["default"].wrap(function (_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: publishDetails = _ref3.publishDetails, _ref3$locale = _ref3.locale, locale = _ref3$locale === void 0 ? null : _ref3$locale, _ref3$version = _ref3.version, version = _ref3$version === void 0 ? null : _ref3$version, _ref3$scheduledAt = _ref3.scheduledAt, scheduledAt = _ref3$scheduledAt === void 0 ? null : _ref3$scheduledAt; url = this.urlPath + '/unpublish'; headers = { headers: _objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)) } || {}; httpBody = {}; httpBody[type] = (0, _cloneDeep2["default"])(publishDetails); return _context2.abrupt("return", publishUnpublish(http, url, httpBody, headers, locale, version, scheduledAt)); case 1: case "end": return _context2.stop(); } }, _callee2, this); })); return function (_x2) { return _ref4.apply(this, arguments); }; }(); }; /** * Internal helper function to handle publish/unpublish operations. * @param {Object} http - HTTP client instance. * @param {string} url - API endpoint URL. * @param {Object} httpBody - Request body object. * @param {Object} headers - Request headers. * @param {string|null} locale - Locale code. * @param {number|null} version - Version number. * @param {string|null} scheduledAt - Scheduled date/time in ISO format. * @returns {Promise<Object>} Promise that resolves to response data. * @async * @private */ var publishUnpublish = /*#__PURE__*/exports.publishUnpublish = function () { var _ref5 = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee3(http, url, httpBody, headers) { var locale, version, scheduledAt, response, _http$httpClientParam, _http$httpClientParam2, data, _args3 = arguments, _t; return _regenerator2["default"].wrap(function (_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: locale = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : null; version = _args3.length > 5 && _args3[5] !== undefined ? _args3[5] : null; scheduledAt = _args3.length > 6 && _args3[6] !== undefined ? _args3[6] : null; if (locale !== null) { httpBody.locale = locale; } if (version !== null) { httpBody.version = version; } if (scheduledAt !== null) { httpBody.scheduled_at = scheduledAt; } _context3.prev = 1; _context3.next = 2; return http.post(url, httpBody, headers); case 2: response = _context3.sent; if (!response.data) { _context3.next = 3; break; } data = response.data || {}; if (http !== null && http !== void 0 && (_http$httpClientParam = http.httpClientParams) !== null && _http$httpClientParam !== void 0 && (_http$httpClientParam = _http$httpClientParam.headers) !== null && _http$httpClientParam !== void 0 && _http$httpClientParam.api_version) { delete http.httpClientParams.headers.api_version; } if (headers !== null && headers !== void 0 && headers.api_version) { delete headers.api_version; } if (headers) { data.stackHeaders = headers; } if ((http === null || http === void 0 || (_http$httpClientParam2 = http.httpClientParams) === null || _http$httpClientParam2 === void 0 || (_http$httpClientParam2 = _http$httpClientParam2.headers) === null || _http$httpClientParam2 === void 0 ? void 0 : _http$httpClientParam2.includeResHeaders) === true) { data.stackHeaders = _objectSpread(_objectSpread({}, data.stackHeaders), {}, { responseHeaders: response.headers }); } return _context3.abrupt("return", data); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context3.next = 6; break; case 5: _context3.prev = 5; _t = _context3["catch"](1); throw (0, _contentstackError2["default"])(_t); case 6: case "end": return _context3.stop(); } }, _callee3, null, [[1, 5]]); })); return function publishUnpublish(_x3, _x4, _x5, _x6) { return _ref5.apply(this, arguments); }; }(); /** * Uploads a file using form data. * @param {Object} options - Upload options. * @param {Object} options.http - HTTP client instance. * @param {string} options.urlPath - API endpoint path. * @param {Object} options.stackHeaders - Stack headers. * @param {Function} options.formData - Function that returns FormData instance. * @param {Object=} options.params - Optional query parameters. * @param {string=} options.method - HTTP method ('POST' or 'PUT'), defaults to 'POST'. * @returns {Promise<Object>} Promise that resolves to response data. * @async */ var upload = /*#__PURE__*/exports.upload = function () { var _ref7 = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee4(_ref6) { var http, urlPath, stackHeaders, formData, params, _ref6$method, method, headers; return _regenerator2["default"].wrap(function (_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: http = _ref6.http, urlPath = _ref6.urlPath, stackHeaders = _ref6.stackHeaders, formData = _ref6.formData, params = _ref6.params, _ref6$method = _ref6.method, method = _ref6$method === void 0 ? 'POST' : _ref6$method; headers = { headers: _objectSpread({}, (0, _cloneDeep2["default"])(stackHeaders)), params: _objectSpread({}, (0, _cloneDeep2["default"])(params)) } || {}; if (!(method === 'POST')) { _context4.next = 1; break; } return _context4.abrupt("return", http.post(urlPath, formData, headers)); case 1: return _context4.abrupt("return", http.put(urlPath, formData, headers)); case 2: case "end": return _context4.stop(); } }, _callee4); })); return function upload(_x7) { return _ref7.apply(this, arguments); }; }(); /** * Creates a create function for entity instances. * @param {Object} options - Create options. * @param {Object} options.http - HTTP client instance. * @param {Object=} options.params - Optional default parameters. * @returns {Function} Async function that creates an entity. * @example * const createFn = create({ http }) * await createFn.call(entityInstance, { entity: {...} }) */ var create = exports.create = function create(_ref8) { var http = _ref8.http, params = _ref8.params; return /*#__PURE__*/function () { var _ref9 = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee5(data, param) { var headers, response, _t2; return _regenerator2["default"].wrap(function (_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: this.stackHeaders = _objectSpread({}, this.stackHeaders); headers = { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(params)), (0, _cloneDeep2["default"])(this.stackHeaders)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) } || {}; _context5.prev = 1; _context5.next = 2; return http.post(this.urlPath, data, headers); case 2: response = _context5.sent; if (!response.data) { _context5.next = 3; break; } return _context5.abrupt("return", new this.constructor(http, parseData(response, this.stackHeaders, this.content_type_uid, this.taxonomy_uid, http))); case 3: if (!(response.status >= 200 && response.status < 300)) { _context5.next = 4; break; } return _context5.abrupt("return", { status: response.status, statusText: response.statusText }); case 4: throw (0, _contentstackError2["default"])(response); case 5: _context5.next = 7; break; case 6: _context5.prev = 6; _t2 = _context5["catch"](1); throw (0, _contentstackError2["default"])(_t2); case 7: case "end": return _context5.stop(); } }, _callee5, this, [[1, 6]]); })); return function (_x8, _x9) { return _ref9.apply(this, arguments); }; }(); }; /** * Creates a query function for entity instances. * @param {Object} options - Query options. * @param {Object} options.http - HTTP client instance. * @param {Function=} options.wrapperCollection - Collection wrapper function. * @param {string=} options.apiVersion - API version to use. * @returns {Function} Function that returns a query builder object. * @example * const queryFn = query({ http, wrapperCollection: EntityCollection }) * const queryBuilder = queryFn.call(entityInstance, { query: {...} }) */ var query = exports.query = function query(_ref0) { var http = _ref0.http, wrapperCollection = _ref0.wrapperCollection, apiVersion = _ref0.apiVersion; return function () { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var headers = _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), apiVersion != null ? { api_version: apiVersion } : {}); if (this.organization_uid) { headers.organization_uid = this.organization_uid; if (!params.query) { params.query = {}; } params.query['org_uid'] = this.organization_uid; } if (this.content_type_uid) { params.content_type_uid = this.content_type_uid; } return (0, _index2["default"])(http, this.urlPath, params, headers, wrapperCollection); }; }; /** * Creates an update function for entity instances. * @param {Object} http - HTTP client instance. * @param {string} type - Entity type (e.g., 'entry', 'asset'). * @param {Object=} params - Optional default parameters. * @returns {Function} Async function that updates an entity. * @example * const updateFn = update(http, 'entry') * await updateFn.call(entryInstance, { locale: 'en-us' }) */ var update = exports.update = function update(http, type) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return /*#__PURE__*/(0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee6() { var param, updateData, json, response, _args6 = arguments, _t3; return _regenerator2["default"].wrap(function (_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: param = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {}; updateData = {}; json = (0, _cloneDeep2["default"])(this); delete json.stackHeaders; delete json.urlPath; delete json.uid; delete json.org_uid; delete json.api_key; delete json.created_at; delete json.created_by; delete json.deleted_at; delete json.updated_at; delete json.updated_by; if (type) { updateData[type] = json; if (type === 'entry') updateData[type] = cleanAssets(updateData[type]); } else { updateData = json; } _context6.prev = 1; _context6.next = 2; return http.put(this.urlPath, updateData, { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), (0, _cloneDeep2["default"])(params)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) }); case 2: response = _context6.sent; if (!response.data) { _context6.next = 3; break; } return _context6.abrupt("return", new this.constructor(http, parseData(response, this.stackHeaders, this.content_type_uid, this.taxonomy_uid, http))); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context6.next = 6; break; case 5: _context6.prev = 5; _t3 = _context6["catch"](1); throw (0, _contentstackError2["default"])(_t3); case 6: case "end": return _context6.stop(); } }, _callee6, this, [[1, 5]]); })); }; /** * Creates a delete function for entity instances. * @param {Object} http - HTTP client instance. * @param {boolean=} force - Whether to force delete, defaults to false. * @param {Object=} params - Optional default parameters. * @returns {Function} Async function that deletes an entity. * @example * const deleteFn = deleteEntity(http, false) * await deleteFn.call(entityInstance, {}) */ var deleteEntity = exports.deleteEntity = function deleteEntity(http) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return /*#__PURE__*/(0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee7() { var param, headers, response, _args7 = arguments, _t4; return _regenerator2["default"].wrap(function (_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: param = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}; _context7.prev = 1; headers = { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), (0, _cloneDeep2["default"])(params)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) } || {}; if (force === true) { headers.params.force = true; } _context7.next = 2; return http["delete"](this.urlPath, headers); case 2: response = _context7.sent; if (!response.data) { _context7.next = 3; break; } return _context7.abrupt("return", response.data); case 3: if (!(response.status >= 200 && response.status < 300)) { _context7.next = 4; break; } return _context7.abrupt("return", { status: response.status, statusText: response.statusText }); case 4: throw (0, _contentstackError2["default"])(response); case 5: _context7.next = 7; break; case 6: _context7.prev = 6; _t4 = _context7["catch"](1); throw (0, _contentstackError2["default"])(_t4); case 7: case "end": return _context7.stop(); } }, _callee7, this, [[1, 6]]); })); }; /** * Creates a fetch function for entity instances. * @param {Object} http - HTTP client instance. * @param {string} type - Entity type (e.g., 'entry', 'asset'). * @param {Object=} params - Optional default parameters. * @returns {Function} Async function that fetches an entity. * @example * const fetchFn = fetch(http, 'entry') * await fetchFn.call(entryInstance, { version: 1 }) */ var fetch = exports.fetch = function fetch(http, type) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return /*#__PURE__*/(0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee8() { var param, headers, response, _args8 = arguments, _t5; return _regenerator2["default"].wrap(function (_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: param = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {}; _context8.prev = 1; headers = { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), (0, _cloneDeep2["default"])(params)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) } || {}; if (this.organization_uid) { headers.headers.organization_uid = this.organization_uid; } _context8.next = 2; return http.get(this.urlPath, headers); case 2: response = _context8.sent; if (!response.data) { _context8.next = 3; break; } if (type === 'entry') { response.data[type]['content_type'] = response.data['content_type']; response.data[type]['schema'] = response.data['schema']; } return _context8.abrupt("return", new this.constructor(http, parseData(response, this.stackHeaders, this.content_type_uid, this.taxonomy_uid, http))); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context8.next = 6; break; case 5: _context8.prev = 5; _t5 = _context8["catch"](1); throw (0, _contentstackError2["default"])(_t5); case 6: case "end": return _context8.stop(); } }, _callee8, this, [[1, 5]]); })); }; /** * Creates a fetchAll function for entity instances. * @param {Object} http - HTTP client instance. * @param {Function=} wrapperCollection - Collection wrapper function. * @param {Object=} params - Optional default parameters. * @returns {Function} Async function that fetches all entities. * @example * const fetchAllFn = fetchAll(http, EntityCollection) * await fetchAllFn.call(entityInstance, { limit: 10 }) */ var fetchAll = exports.fetchAll = function fetchAll(http, wrapperCollection) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return /*#__PURE__*/(0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee9() { var param, headers, response, _args9 = arguments, _t6; return _regenerator2["default"].wrap(function (_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: param = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {}; headers = { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), (0, _cloneDeep2["default"])(params)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) } || {}; _context9.prev = 1; _context9.next = 2; return http.get(this.urlPath, headers); case 2: response = _context9.sent; if (!response.data) { _context9.next = 3; break; } return _context9.abrupt("return", new _contentstackCollection2["default"](response, http, this.stackHeaders, wrapperCollection)); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context9.next = 6; break; case 5: _context9.prev = 5; _t6 = _context9["catch"](1); throw (0, _contentstackError2["default"])(_t6); case 6: case "end": return _context9.stop(); } }, _callee9, this, [[1, 5]]); })); }; /** * Parses response data and adds stack headers and metadata. * @param {Object} response - HTTP response object. * @param {Object} stackHeaders - Stack headers to add to data. * @param {string=} contentTypeUID - Content type UID. * @param {string=} taxonomyUid - Taxonomy UID. * @param {Object} http - HTTP client instance. * @returns {Object} Parsed data object with stack headers. */ function parseData(response, stackHeaders, contentTypeUID, taxonomyUid, http) { var _http$httpClientParam3; var data = response.data || {}; if (stackHeaders && 'api_version' in stackHeaders) { delete stackHeaders.api_version; } if (stackHeaders) { data.stackHeaders = stackHeaders; } if (contentTypeUID) { data.content_type_uid = contentTypeUID; } if (taxonomyUid) { data.taxonomy_uid = taxonomyUid; } if ((http === null || http === void 0 || (_http$httpClientParam3 = http.httpClientParams) === null || _http$httpClientParam3 === void 0 || (_http$httpClientParam3 = _http$httpClientParam3.headers) === null || _http$httpClientParam3 === void 0 ? void 0 : _http$httpClientParam3.includeResHeaders) === true) { data.stackHeaders = _objectSpread(_objectSpread({}, data.stackHeaders), {}, { responseHeaders: response.headers }); } return data; } /** * Performs a GET request with branch and stack header data. * @param {Object} http - HTTP client instance. * @param {string} url - API endpoint URL. * @param {Object} params - Query parameters. * @param {Object} data - Data object containing branches and stackHeaders. * @returns {Promise<Object>} Promise that resolves to response data. * @async */ function get(_x0, _x1, _x10, _x11) { return _get.apply(this, arguments); } /** * Creates a move function for entity instances. * @param {Object} http - HTTP client instance. * @param {string} type - Entity type (e.g., 'entry', 'asset'). * @param {boolean=} force - Whether to force move, defaults to false. * @param {Object=} params - Optional default parameters. * @returns {Function} Async function that moves an entity. * @example * const moveFn = move(http, 'entry', false) * await moveFn.call(entryInstance, { parent_uid: 'new_parent' }) */ function _get() { _get = (0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee1(http, url, params, data) { var headers, response, _t8; return _regenerator2["default"].wrap(function (_context1) { while (1) switch (_context1.prev = _context1.next) { case 0: headers = { params: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(data.branches)), (0, _cloneDeep2["default"])(params)), headers: _objectSpread({}, (0, _cloneDeep2["default"])(data.stackHeaders)) } || {}; _context1.prev = 1; _context1.next = 2; return http.get(url, headers); case 2: response = _context1.sent; if (!response.data) { _context1.next = 3; break; } return _context1.abrupt("return", response.data); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context1.next = 6; break; case 5: _context1.prev = 5; _t8 = _context1["catch"](1); throw (0, _contentstackError2["default"])(_t8); case 6: case "end": return _context1.stop(); } }, _callee1, null, [[1, 5]]); })); return _get.apply(this, arguments); } var move = exports.move = function move(http, type) { var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; return /*#__PURE__*/(0, _asyncToGenerator3["default"])(/*#__PURE__*/_regenerator2["default"].mark(function _callee0() { var param, updateData, json, headers, response, _args0 = arguments, _t7; return _regenerator2["default"].wrap(function (_context0) { while (1) switch (_context0.prev = _context0.next) { case 0: param = _args0.length > 0 && _args0[0] !== undefined ? _args0[0] : {}; _context0.prev = 1; updateData = {}; json = (0, _cloneDeep2["default"])(this); if (type) { updateData[type] = json; } else { updateData = json; } headers = { headers: _objectSpread(_objectSpread({}, (0, _cloneDeep2["default"])(this.stackHeaders)), (0, _cloneDeep2["default"])(params)), params: _objectSpread({}, (0, _cloneDeep2["default"])(param)) } || {}; if (force === true) { headers.params.force = true; } _context0.next = 2; return http.put("".concat(this.urlPath, "/move"), param, headers); case 2: response = _context0.sent; if (!response.data) { _context0.next = 3; break; } return _context0.abrupt("return", new this.constructor(http, parseData(response, this.stackHeaders, this.content_type_uid, this.taxonomy_uid, http))); case 3: throw (0, _contentstackError2["default"])(response); case 4: _context0.next = 6; break; case 5: _context0.prev = 5; _t7 = _context0["catch"](1); throw (0, _contentstackError2["default"])(_t7); case 6: case "end": return _context0.stop(); } }, _callee0, this, [[1, 5]]); })); }; function isAsset(data) { var element = Array.isArray(data) && data.length > 0 ? data[0] : data; return (!!element.file_size || !!element.content_type) && !!element.uid; } /** * Recursively cleans asset objects in data, replacing full asset objects with their UIDs. * @param {Object|Array} data - Data object or array containing asset references. * @returns {Object|Array} Data with asset objects replaced by UIDs. */ function cleanAssets(data) { if (data && (0, _typeof3["default"])(data) === 'object') { var keys = Object.keys(data); for (var _i = 0, _keys = keys; _i < _keys.length; _i++) { var key = _keys[_i]; if (data[key] !== null && data[key] !== undefined && (0, _typeof3["default"])(data[key]) === 'object') { if (isAsset(data[key])) { data[key] = Array.isArray(data[key]) ? data[key].map(function (element) { return element.uid; }) : data[key].uid; } else { cleanAssets(data[key]); } } } } return data; }