UNPKG

contentful-management

Version:
108 lines (105 loc) 3.67 kB
import { toPlainObject, freezeSys } from 'contentful-sdk-core'; import copy from 'fast-copy'; import '../common-types.js'; import { wrapCursorPaginatedCollection } from '../common-utils.js'; import enhanceWithMethods from '../enhance-with-methods.js'; import { wrapReleaseAction } from './release-action.js'; /* eslint-disable @typescript-eslint/no-explicit-any */ /** * @internal */ function createReleaseApi(makeRequest) { const getParams = (self) => { const release = self.toPlainObject(); return { spaceId: release.sys.space.sys.id, environmentId: release.sys.environment.sys.id, releaseId: release.sys.id, version: release.sys.version, }; }; return { async archive() { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'archive', params, }).then((release) => wrapRelease(makeRequest, release)); }, async unarchive() { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'unarchive', params, }).then((release) => wrapRelease(makeRequest, release)); }, async update(payload) { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'update', params, payload, }).then((release) => wrapRelease(makeRequest, release)); }, async delete() { const params = getParams(this); await makeRequest({ entityType: 'Release', action: 'delete', params, }); }, async publish(options) { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'publish', params, }) .then((data) => wrapReleaseAction(makeRequest, data)) .then((action) => action.waitProcessing(options)); }, async unpublish(options) { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'unpublish', params, }) .then((data) => wrapReleaseAction(makeRequest, data)) .then((action) => action.waitProcessing(options)); }, async validate(options) { const params = getParams(this); return makeRequest({ entityType: 'Release', action: 'validate', params, payload: options?.payload, }) .then((data) => wrapReleaseAction(makeRequest, data)) .then((action) => action.waitProcessing(options?.processingOptions)); }, }; } /** * Return a Release object enhanced with its own API helper functions. * @internal * @param makeRequest - function to make requests via an adapter * @param data - Raw Release data * @returns Wrapped Release data */ function wrapRelease(makeRequest, data) { const release = toPlainObject(copy(data)); const releaseWithApiMethods = enhanceWithMethods(release, createReleaseApi(makeRequest)); return freezeSys(releaseWithApiMethods); } /** * @internal */ const wrapReleaseCollection = wrapCursorPaginatedCollection(wrapRelease); export { wrapRelease, wrapReleaseCollection }; //# sourceMappingURL=release.js.map