contentful-management
Version:
Client for Contentful's Content Management API
60 lines (57 loc) • 2.14 kB
JavaScript
import { toPlainObject, freezeSys } from 'contentful-sdk-core';
import copy from 'fast-copy';
import enhanceWithMethods from '../enhance-with-methods.js';
import { pollAsyncActionStatus } from '../methods/action.js';
/* eslint-disable @typescript-eslint/no-explicit-any */
/** Represents the state of the BulkAction */
var BulkActionStatus;
(function (BulkActionStatus) {
/** BulkAction is pending execution */
BulkActionStatus["created"] = "created";
/** BulkAction has been started and pending completion */
BulkActionStatus["inProgress"] = "inProgress";
/** BulkAction was completed successfully (terminal state) */
BulkActionStatus["succeeded"] = "succeeded";
/** BulkAction failed to complete (terminal state) */
BulkActionStatus["failed"] = "failed";
})(BulkActionStatus || (BulkActionStatus = {}));
Object.values(BulkActionStatus);
/**
* @internal
*/
function createBulkActionApi(makeRequest) {
const getParams = (self) => {
const bulkAction = self.toPlainObject();
return {
spaceId: bulkAction.sys.space.sys.id,
environmentId: bulkAction.sys.environment.sys.id,
bulkActionId: bulkAction.sys.id,
};
};
return {
async get() {
const params = getParams(this);
return makeRequest({
entityType: 'BulkAction',
action: 'get',
params,
}).then((bulkAction) => wrapBulkAction(makeRequest, bulkAction));
},
async waitProcessing(options) {
return pollAsyncActionStatus(async () => this.get(), options);
},
};
}
/**
* @internal
* @param makeRequest - function to make requests via an adapter
* @param data - Raw BulkAction data
* @returns Wrapped BulkAction data
*/
function wrapBulkAction(makeRequest, data) {
const bulkAction = toPlainObject(copy(data));
const bulkActionWithApiMethods = enhanceWithMethods(bulkAction, createBulkActionApi(makeRequest));
return freezeSys(bulkActionWithApiMethods);
}
export { BulkActionStatus, wrapBulkAction };
//# sourceMappingURL=bulk-action.js.map