UNPKG

@contentstack/management

Version:

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

355 lines (352 loc) 14.2 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _regeneratorRuntime from "@babel/runtime/regenerator"; 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) { _defineProperty(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; } import cloneDeep from 'lodash/cloneDeep'; import error from '../../../core/contentstackError'; import ContentstackCollection from '../../../contentstackCollection'; import { Release } from '..'; /** * A ReleaseItem is a set of entries and assets that needs to be deployed (published or unpublished) all at once to a particular environment. * @namespace ReleaseItem */ export function ReleaseItem(http) { var _this = this; var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; this.stackHeaders = data.stackHeaders; if (data.item) { Object.assign(this, cloneDeep(data.item)); } if (data.releaseUid) { this.urlPath = "releases/".concat(data.releaseUid, "/items"); /** * @description The Delete method request deletes one or more items (entries and/or assets) from a specific Release. * @memberof ReleaseItem * @func delete * @param {Object} param.items Add multiple items to a Release * @param {Object} param.items Add multiple items to a Release * @returns {Object} Response Object. * @example * import * as contentstack from '@contentstack/management' * const client = contentstack.client() * // To delete all the items from release * client.stack({ api_key: 'api_key'}).release('release_uid').delete() * .then((response) => console.log(response.notice)) * * @example * // Delete specific items from delete * import * as contentstack from '@contentstack/management' * const client = contentstack.client() * * const items = [ * { * uid: "entry_or_asset_uid1", * version: 1, * locale: "en-us", * content_type_uid: "demo1", * action: "publish" * }, * { * uid: "entry_or_asset_uid2", * version: 4, * locale: "fr-fr", * content_type_uid: "demo2", * action: "publish" * } * ] * client.stack({ api_key: 'api_key'}).release('release_uid').delete({items}) * .then((response) => console.log(response.notice)) */ this["delete"] = /*#__PURE__*/function () { var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(params) { var param, headers, response, _t; return _regeneratorRuntime.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: param = {}; if (params.items === undefined && params.item === undefined) { param = { all: true }; params.items = []; } _context.prev = 1; headers = { headers: _objectSpread({}, cloneDeep(_this.stackHeaders)), data: _objectSpread({}, cloneDeep(params)), params: _objectSpread({}, cloneDeep(param)) } || {}; if (params.release_version) { headers.headers['release_version'] = params.release_version; } if (params.item) { _this.urlPath = "releases/".concat(data.releaseUid, "/item"); headers.data['item'] = params.item; } else { headers.data['items'] = params.items; } _context.next = 2; return http["delete"](_this.urlPath, headers); case 2: response = _context.sent; if (!response.data) { _context.next = 3; break; } return _context.abrupt("return", response.data); case 3: throw error(response); case 4: _context.next = 6; break; case 5: _context.prev = 5; _t = _context["catch"](1); throw error(_t); case 6: case "end": return _context.stop(); } }, _callee, null, [[1, 5]]); })); return function (_x) { return _ref.apply(this, arguments); }; }(); /** * @description The Create method allows you to add an one or more items items (entry or asset) to a Release. * @memberof ReleaseItem * @func create * @param {Object} param.item Add a single item to a Release * @param {Object} param.items Add multiple items to a Release * @returns {Promise<Release.Release>} Promise for Release instance * @example * import * as contentstack from '@contentstack/management' * const client = contentstack.client() * * const item = { * version: 1, * uid: "entry_or_asset_uid", * content_type_uid: "your_content_type_uid", * action: "publish", * locale: "en-us" * } * client.stack({ api_key: 'api_key'}).release('release_uid').item().create({ item }) * .then((release) => console.log(release)) * * @example * import * as contentstack from '@contentstack/management' * const client = contentstack.client() * * const items = [ * { * uid: "entry_or_asset_uid1", * version: 1, * locale: "en-us", * content_type_uid: "demo1", * action: "publish" * }, * { * uid: "entry_or_asset_uid2", * version: 4, * locale: "fr-fr", * content_type_uid: "demo2", * action: "publish" * } * ] * client.stack({ api_key: 'api_key'}).release('release_uid').item().create({ items }) * .then((release) => console.log(release)) */ this.create = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(param) { var headers, response, _t2; return _regeneratorRuntime.wrap(function (_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: headers = { headers: _objectSpread({}, cloneDeep(_this.stackHeaders)) } || {}; if (param.release_version) { headers.headers['release_version'] = param.release_version; } if (param.item) { _this.urlPath = "releases/".concat(data.releaseUid, "/item"); // NOTE - Breaking sanity check that's why disabling it // eslint-disable-next-line no-self-assign param['item'] = param.item; } else { // eslint-disable-next-line no-self-assign param['items'] = param.items; } _context2.prev = 1; _context2.next = 2; return http.post(_this.urlPath, param, headers); case 2: response = _context2.sent; if (!response.data) { _context2.next = 4; break; } if (!response.data) { _context2.next = 3; break; } return _context2.abrupt("return", new Release(http, _objectSpread(_objectSpread({}, response.data), {}, { stackHeaders: data.stackHeaders }))); case 3: _context2.next = 5; break; case 4: throw error(response); case 5: _context2.next = 7; break; case 6: _context2.prev = 6; _t2 = _context2["catch"](1); throw error(_t2); case 7: case "end": return _context2.stop(); } }, _callee2, null, [[1, 6]]); })); return function (_x2) { return _ref2.apply(this, arguments); }; }(); /** * @description The Get all items in a Release request retrieves a list of all items (entries and assets) that are part of a specific Release. * @memberof ReleaseItem * @func findAll * @returns {Promise<ContentstackCollection.ContentstackCollection>} Promise for ContentType instance * @param {Boolean} param.include_count ‘include_count’ parameter includes the count of total number of items in Release, along with the details of each items. * @param {Int} param.limit The ‘limit’ parameter will return a specific number of release items in the output. * @param {Int} param.skip The ‘skip’ parameter will skip a specific number of release items in the response. * @example * import * as contentstack from '@contentstack/management' * const client = contentstack.client() * * client.stack({ api_key: 'api_key'}).release('release_uid').item().fetchAll() * .then((items) => console.log(items)) */ this.findAll = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var param, headers, response, _args3 = arguments, _t3; return _regeneratorRuntime.wrap(function (_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: param = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}; _context3.prev = 1; headers = { headers: _objectSpread({}, cloneDeep(_this.stackHeaders)), params: _objectSpread({}, cloneDeep(param)) } || {}; if (param.release_version) { headers.headers['release_version'] = param.release_version; delete headers.params.release_version; } _context3.next = 2; return http.get(_this.urlPath, headers); case 2: response = _context3.sent; if (!response.data) { _context3.next = 3; break; } return _context3.abrupt("return", new ContentstackCollection(response, http, _this.stackHeaders, ReleaseItemCollection)); case 3: throw error(response); case 4: _context3.next = 6; break; case 5: _context3.prev = 5; _t3 = _context3["catch"](1); error(_t3); case 6: case "end": return _context3.stop(); } }, _callee3, null, [[1, 5]]); })); /** * The move request allows you to move multiple items within a release. * @memberof ReleaseItem * @func move * @returns {Promise<Object>} Response Object. * @param {Object} params.param - The data containing the items to be moved within the release. * @param {String} [params.release_version] - The release version. * @example * const moveData = { * items: [ * { * uid: '{{entry_uid}}', * content_type: '{{content_type_uid}}' * } * ] * } * client.stack({ api_key: 'api_key'}).release('release_uid').item().move({ param: moveData, release_version: '1.0' }) * .then((response) => { console.log(response) }) */ // eslint-disable-next-line camelcase this.move = /*#__PURE__*/function () { var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref4) { var param, _ref4$release_version, release_version, headers, response, _t4; return _regeneratorRuntime.wrap(function (_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: param = _ref4.param, _ref4$release_version = _ref4.release_version, release_version = _ref4$release_version === void 0 ? '' : _ref4$release_version; headers = { headers: _objectSpread({}, cloneDeep(_this.stackHeaders)) } || {}; // eslint-disable-next-line camelcase if (release_version) { // eslint-disable-next-line camelcase headers.headers['release_version'] = release_version; } _context4.prev = 1; _context4.next = 2; return http.put("".concat(_this.urlPath, "/move"), param, headers); case 2: response = _context4.sent; if (!response.data) { _context4.next = 3; break; } return _context4.abrupt("return", response.data); case 3: _context4.next = 5; break; case 4: _context4.prev = 4; _t4 = _context4["catch"](1); throw error(_t4); case 5: case "end": return _context4.stop(); } }, _callee4, null, [[1, 4]]); })); return function (_x3) { return _ref5.apply(this, arguments); }; }(); } return this; } export function ReleaseItemCollection(http, data, releaseUid) { var obj = cloneDeep(data.items) || []; var contentTypeCollection = obj.map(function (userdata) { return new ReleaseItem(http, { releaseUid: releaseUid, item: userdata, stackHeaders: data.stackHeaders }); }); return contentTypeCollection; }