contentful-management 12.0.0-beta.1 → 12.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/cjs/adapters/REST/endpoints/access-token.cjs +136 -0
- package/dist/cjs/adapters/REST/endpoints/ai-action-invocation.cjs +9 -0
- package/dist/cjs/adapters/REST/endpoints/ai-action.cjs +53 -0
- package/dist/cjs/adapters/REST/endpoints/api-key.cjs +48 -0
- package/dist/cjs/adapters/REST/endpoints/app-access-token.cjs +9 -0
- package/dist/cjs/adapters/REST/endpoints/app-action-call.cjs +65 -0
- package/dist/cjs/adapters/REST/endpoints/app-action.cjs +42 -0
- package/dist/cjs/adapters/REST/endpoints/app-bundle.cjs +39 -0
- package/dist/cjs/adapters/REST/endpoints/app-definition.cjs +47 -0
- package/dist/cjs/adapters/REST/endpoints/app-details.cjs +17 -0
- package/dist/cjs/adapters/REST/endpoints/app-event-subscription.cjs +17 -0
- package/dist/cjs/adapters/REST/endpoints/app-installation.cjs +42 -0
- package/dist/cjs/adapters/REST/endpoints/app-key.cjs +21 -0
- package/dist/cjs/adapters/REST/endpoints/app-signed-request.cjs +9 -0
- package/dist/cjs/adapters/REST/endpoints/app-signing-secret.cjs +17 -0
- package/dist/cjs/adapters/REST/endpoints/app-upload.cjs +28 -0
- package/dist/cjs/adapters/REST/endpoints/asset-key.cjs +34 -0
- package/dist/cjs/adapters/REST/endpoints/asset.cjs +185 -0
- package/dist/cjs/adapters/REST/endpoints/bulk-action.cjs +21 -0
- package/dist/cjs/adapters/REST/endpoints/comment.cjs +92 -0
- package/dist/cjs/adapters/REST/endpoints/concept-scheme.cjs +44 -0
- package/dist/cjs/adapters/REST/endpoints/concept.cjs +65 -0
- package/dist/cjs/adapters/REST/endpoints/content-type.cjs +56 -0
- package/dist/cjs/adapters/REST/endpoints/editor-interface.cjs +24 -0
- package/dist/cjs/adapters/REST/endpoints/entry.cjs +104 -0
- package/dist/cjs/adapters/REST/endpoints/environment-alias.cjs +44 -0
- package/dist/cjs/adapters/REST/endpoints/environment-template-installation.cjs +23 -0
- package/dist/cjs/adapters/REST/endpoints/environment-template.cjs +49 -0
- package/dist/cjs/adapters/REST/endpoints/environment.cjs +47 -0
- package/dist/cjs/adapters/REST/endpoints/extension.cjs +44 -0
- package/dist/cjs/adapters/REST/endpoints/function-log.cjs +23 -0
- package/dist/cjs/adapters/REST/endpoints/function.cjs +25 -0
- package/dist/cjs/adapters/REST/endpoints/http.cjs +29 -0
- package/dist/cjs/adapters/REST/endpoints/index.cjs +139 -0
- package/dist/cjs/adapters/REST/endpoints/locale.cjs +37 -0
- package/dist/cjs/adapters/REST/endpoints/oauth-application.cjs +147 -0
- package/dist/cjs/adapters/REST/endpoints/organization-invitation.cjs +23 -0
- package/dist/cjs/adapters/REST/endpoints/organization-membership.cjs +32 -0
- package/dist/cjs/adapters/REST/endpoints/organization.cjs +28 -0
- package/dist/cjs/adapters/REST/endpoints/personal-access-token.cjs +37 -0
- package/dist/cjs/adapters/REST/endpoints/preview-api-key.cjs +15 -0
- package/dist/cjs/adapters/REST/endpoints/raw.cjs +44 -0
- package/dist/cjs/adapters/REST/endpoints/release-action.cjs +21 -0
- package/dist/cjs/adapters/REST/endpoints/release.cjs +61 -0
- package/dist/cjs/adapters/REST/endpoints/resource-provider.cjs +18 -0
- package/dist/cjs/adapters/REST/endpoints/resource-type.cjs +30 -0
- package/dist/cjs/adapters/REST/endpoints/resource.cjs +10 -0
- package/dist/cjs/adapters/REST/endpoints/role.cjs +48 -0
- package/dist/cjs/adapters/REST/endpoints/scheduled-action.cjs +44 -0
- package/dist/cjs/adapters/REST/endpoints/snapshot.cjs +30 -0
- package/dist/cjs/adapters/REST/endpoints/space-member.cjs +11 -0
- package/dist/cjs/adapters/REST/endpoints/space-membership.cjs +60 -0
- package/dist/cjs/adapters/REST/endpoints/space.cjs +34 -0
- package/dist/cjs/adapters/REST/endpoints/tag.cjs +37 -0
- package/dist/cjs/adapters/REST/endpoints/task.cjs +40 -0
- package/dist/cjs/adapters/REST/endpoints/team-membership.cjs +35 -0
- package/dist/cjs/adapters/REST/endpoints/team-space-membership.cjs +46 -0
- package/dist/cjs/adapters/REST/endpoints/team.cjs +36 -0
- package/dist/cjs/adapters/REST/endpoints/ui-config.cjs +22 -0
- package/dist/cjs/adapters/REST/endpoints/upload-credentials.cjs +16 -0
- package/dist/cjs/adapters/REST/endpoints/upload.cjs +42 -0
- package/dist/cjs/adapters/REST/endpoints/usage.cjs +17 -0
- package/dist/cjs/adapters/REST/endpoints/user-ui-config.cjs +22 -0
- package/dist/cjs/adapters/REST/endpoints/user.cjs +27 -0
- package/dist/cjs/adapters/REST/endpoints/utils.cjs +20 -0
- package/dist/cjs/adapters/REST/endpoints/webhook.cjs +98 -0
- package/dist/cjs/adapters/REST/endpoints/workflow-definition.cjs +41 -0
- package/dist/cjs/adapters/REST/endpoints/workflow.cjs +49 -0
- package/dist/cjs/adapters/REST/endpoints/workflows-changelog.cjs +11 -0
- package/dist/cjs/adapters/REST/make-request.cjs +19 -0
- package/dist/cjs/adapters/REST/rest-adapter.cjs +32 -0
- package/dist/cjs/common-types.cjs +6 -0
- package/dist/cjs/common-utils.cjs +38 -0
- package/dist/cjs/constants/editor-interface-defaults/controls-defaults.cjs +161 -0
- package/dist/cjs/constants/editor-interface-defaults/editors-defaults.cjs +40 -0
- package/dist/cjs/constants/editor-interface-defaults/index.cjs +14 -0
- package/dist/cjs/constants/editor-interface-defaults/sidebar-defaults.cjs +71 -0
- package/dist/cjs/constants/editor-interface-defaults/types.cjs +18 -0
- package/dist/cjs/create-adapter.cjs +21 -0
- package/dist/cjs/create-app-definition-api.cjs +254 -0
- package/dist/cjs/create-contentful-api.cjs +592 -0
- package/dist/cjs/create-entry-api.cjs +481 -0
- package/dist/cjs/create-environment-api.cjs +2403 -0
- package/dist/cjs/create-environment-template-api.cjs +270 -0
- package/dist/cjs/create-organization-api.cjs +1136 -0
- package/dist/cjs/create-space-api.cjs +1591 -0
- package/dist/cjs/create-ui-config-api.cjs +55 -0
- package/dist/cjs/create-user-ui-config-api.cjs +55 -0
- package/dist/cjs/enhance-with-methods.cjs +26 -0
- package/dist/cjs/entities/access-token.cjs +36 -0
- package/dist/cjs/entities/ai-action-invocation.cjs +46 -0
- package/dist/cjs/entities/ai-action.cjs +94 -0
- package/dist/cjs/entities/api-key.cjs +59 -0
- package/dist/cjs/entities/app-access-token.cjs +17 -0
- package/dist/cjs/entities/app-action-call.cjs +67 -0
- package/dist/cjs/entities/app-action.cjs +48 -0
- package/dist/cjs/entities/app-bundle.cjs +48 -0
- package/dist/cjs/entities/app-definition.cjs +29 -0
- package/dist/cjs/entities/app-details.cjs +39 -0
- package/dist/cjs/entities/app-event-subscription.cjs +34 -0
- package/dist/cjs/entities/app-installation.cjs +55 -0
- package/dist/cjs/entities/app-key.cjs +44 -0
- package/dist/cjs/entities/app-signed-request.cjs +17 -0
- package/dist/cjs/entities/app-signing-secret.cjs +34 -0
- package/dist/cjs/entities/app-upload.cjs +47 -0
- package/dist/cjs/entities/asset-key.cjs +17 -0
- package/dist/cjs/entities/asset.cjs +124 -0
- package/dist/cjs/entities/bulk-action.cjs +60 -0
- package/dist/cjs/entities/comment.cjs +63 -0
- package/dist/cjs/entities/concept-scheme.cjs +2 -0
- package/dist/cjs/entities/concept.cjs +2 -0
- package/dist/cjs/entities/content-type.cjs +120 -0
- package/dist/cjs/entities/editor-interface.cjs +50 -0
- package/dist/cjs/entities/entry.cjs +27 -0
- package/dist/cjs/entities/environment-alias.cjs +58 -0
- package/dist/cjs/entities/environment-template-installation.cjs +23 -0
- package/dist/cjs/entities/environment-template.cjs +18 -0
- package/dist/cjs/entities/environment.cjs +34 -0
- package/dist/cjs/entities/extension.cjs +54 -0
- package/dist/cjs/entities/function-log.cjs +26 -0
- package/dist/cjs/entities/function.cjs +66 -0
- package/dist/cjs/entities/index.cjs +131 -0
- package/dist/cjs/entities/locale.cjs +57 -0
- package/dist/cjs/entities/oauth-application.cjs +66 -0
- package/dist/cjs/entities/organization-invitation.cjs +17 -0
- package/dist/cjs/entities/organization-membership.cjs +53 -0
- package/dist/cjs/entities/organization.cjs +32 -0
- package/dist/cjs/entities/personal-access-token.cjs +36 -0
- package/dist/cjs/entities/preview-api-key.cjs +31 -0
- package/dist/cjs/entities/release-action.cjs +55 -0
- package/dist/cjs/entities/release.cjs +111 -0
- package/dist/cjs/entities/resource-provider.cjs +139 -0
- package/dist/cjs/entities/resource-type.cjs +98 -0
- package/dist/cjs/entities/resource.cjs +13 -0
- package/dist/cjs/entities/role.cjs +53 -0
- package/dist/cjs/entities/scheduled-action.cjs +154 -0
- package/dist/cjs/entities/snapshot.cjs +36 -0
- package/dist/cjs/entities/space-member.cjs +23 -0
- package/dist/cjs/entities/space-membership.cjs +53 -0
- package/dist/cjs/entities/space.cjs +33 -0
- package/dist/cjs/entities/tag.cjs +56 -0
- package/dist/cjs/entities/task.cjs +57 -0
- package/dist/cjs/entities/team-membership.cjs +54 -0
- package/dist/cjs/entities/team-space-membership.cjs +53 -0
- package/dist/cjs/entities/team.cjs +53 -0
- package/dist/cjs/entities/ui-config.cjs +20 -0
- package/dist/cjs/entities/upload.cjs +38 -0
- package/dist/cjs/entities/usage.cjs +25 -0
- package/dist/cjs/entities/user-ui-config.cjs +20 -0
- package/dist/cjs/entities/user.cjs +28 -0
- package/dist/cjs/entities/webhook.cjs +77 -0
- package/dist/cjs/entities/workflow-definition.cjs +79 -0
- package/dist/cjs/index.cjs +65 -0
- package/dist/cjs/methods/action.cjs +53 -0
- package/dist/cjs/methods/content-type.cjs +51 -0
- package/dist/cjs/methods/utils.cjs +11 -0
- package/dist/cjs/plain/as-iterator.cjs +32 -0
- package/dist/cjs/plain/checks.cjs +15 -0
- package/dist/cjs/plain/pagination-helper.cjs +56 -0
- package/dist/cjs/plain/plain-client.cjs +516 -0
- package/dist/cjs/plain/wrappers/wrap.cjs +26 -0
- package/dist/cjs/upload-http-client.cjs +17 -0
- package/dist/contentful-management.browser.js +50 -34
- package/dist/contentful-management.browser.min.js +1 -1
- package/dist/contentful-management.cjs +35 -19
- package/dist/esm/create-contentful-api.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/plain/plain-client.js +1 -1
- package/dist/stats-browser-min.html +1 -1
- package/package.json +6 -6
- package/types.d.ts +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var contentfulSdkCore = require('contentful-sdk-core');
|
|
6
|
+
var copy = require('fast-copy');
|
|
7
|
+
var commonUtils = require('../common-utils.js');
|
|
8
|
+
var enhanceWithMethods = require('../enhance-with-methods.js');
|
|
9
|
+
|
|
10
|
+
exports.WorkflowStepPermissionType = void 0;
|
|
11
|
+
(function (WorkflowStepPermissionType) {
|
|
12
|
+
WorkflowStepPermissionType["EntityPermission"] = "entity_permission";
|
|
13
|
+
WorkflowStepPermissionType["WorkflowPermission"] = "workflow_permission";
|
|
14
|
+
})(exports.WorkflowStepPermissionType || (exports.WorkflowStepPermissionType = {}));
|
|
15
|
+
exports.WorkflowStepPermissionAction = void 0;
|
|
16
|
+
(function (WorkflowStepPermissionAction) {
|
|
17
|
+
WorkflowStepPermissionAction["Edit"] = "edit";
|
|
18
|
+
WorkflowStepPermissionAction["Publish"] = "publish";
|
|
19
|
+
WorkflowStepPermissionAction["Delete"] = "delete";
|
|
20
|
+
})(exports.WorkflowStepPermissionAction || (exports.WorkflowStepPermissionAction = {}));
|
|
21
|
+
exports.WorkflowStepPermissionEffect = void 0;
|
|
22
|
+
(function (WorkflowStepPermissionEffect) {
|
|
23
|
+
WorkflowStepPermissionEffect["Allow"] = "allow";
|
|
24
|
+
WorkflowStepPermissionEffect["Deny"] = "deny";
|
|
25
|
+
})(exports.WorkflowStepPermissionEffect || (exports.WorkflowStepPermissionEffect = {}));
|
|
26
|
+
/* Workflow Step Action */
|
|
27
|
+
exports.WorkflowStepActionType = void 0;
|
|
28
|
+
(function (WorkflowStepActionType) {
|
|
29
|
+
WorkflowStepActionType["App"] = "app";
|
|
30
|
+
WorkflowStepActionType["Email"] = "email";
|
|
31
|
+
WorkflowStepActionType["Task"] = "task";
|
|
32
|
+
})(exports.WorkflowStepActionType || (exports.WorkflowStepActionType = {}));
|
|
33
|
+
/**
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
function createWorkflowDefinitionApi(makeRequest) {
|
|
37
|
+
const getParams = (workflowDefinition) => ({
|
|
38
|
+
spaceId: workflowDefinition.sys.space.sys.id,
|
|
39
|
+
environmentId: workflowDefinition.sys.environment.sys.id,
|
|
40
|
+
workflowDefinitionId: workflowDefinition.sys.id,
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
update: function () {
|
|
44
|
+
const raw = this.toPlainObject();
|
|
45
|
+
return makeRequest({
|
|
46
|
+
entityType: 'WorkflowDefinition',
|
|
47
|
+
action: 'update',
|
|
48
|
+
params: getParams(raw),
|
|
49
|
+
payload: raw,
|
|
50
|
+
}).then((data) => wrapWorkflowDefinition(makeRequest, data));
|
|
51
|
+
},
|
|
52
|
+
delete: function () {
|
|
53
|
+
const raw = this.toPlainObject();
|
|
54
|
+
return makeRequest({
|
|
55
|
+
entityType: 'WorkflowDefinition',
|
|
56
|
+
action: 'delete',
|
|
57
|
+
params: Object.assign(Object.assign({}, getParams(raw)), { version: raw.sys.version }),
|
|
58
|
+
}).then(() => {
|
|
59
|
+
// noop
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
function wrapWorkflowDefinition(makeRequest, data) {
|
|
68
|
+
const workflowDefinition = contentfulSdkCore.toPlainObject(copy(data));
|
|
69
|
+
const workflowDefinitionWithMethods = enhanceWithMethods(workflowDefinition, createWorkflowDefinitionApi(makeRequest));
|
|
70
|
+
return contentfulSdkCore.freezeSys(workflowDefinitionWithMethods);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
const wrapWorkflowDefinitionCollection = commonUtils.wrapCollection(wrapWorkflowDefinition);
|
|
76
|
+
|
|
77
|
+
exports.default = createWorkflowDefinitionApi;
|
|
78
|
+
exports.wrapWorkflowDefinition = wrapWorkflowDefinition;
|
|
79
|
+
exports.wrapWorkflowDefinitionCollection = wrapWorkflowDefinitionCollection;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var contentfulSdkCore = require('contentful-sdk-core');
|
|
4
|
+
var createAdapter = require('./create-adapter.js');
|
|
5
|
+
var createContentfulApi = require('./create-contentful-api.js');
|
|
6
|
+
var plainClient = require('./plain/plain-client.js');
|
|
7
|
+
var index = require('./constants/editor-interface-defaults/index.js');
|
|
8
|
+
var asIterator = require('./plain/as-iterator.js');
|
|
9
|
+
var paginationHelper = require('./plain/pagination-helper.js');
|
|
10
|
+
var checks = require('./plain/checks.js');
|
|
11
|
+
var restAdapter = require('./adapters/REST/rest-adapter.js');
|
|
12
|
+
var makeRequest = require('./adapters/REST/make-request.js');
|
|
13
|
+
var commonTypes = require('./common-types.js');
|
|
14
|
+
var workflowDefinition = require('./entities/workflow-definition.js');
|
|
15
|
+
|
|
16
|
+
function _interopNamespaceDefaultOnly (e) { return Object.freeze({ __proto__: null, default: e }); }
|
|
17
|
+
|
|
18
|
+
var index__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(index);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Contentful Management API SDK. Allows you to create instances of a client
|
|
22
|
+
* with access to the Contentful Content Management API.
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
function createClient(params, opts = {}) {
|
|
26
|
+
const sdkMain = opts.type === 'plain' ? 'contentful-management-plain.js' : 'contentful-management.js';
|
|
27
|
+
const userAgent = contentfulSdkCore.getUserAgentHeader(`${sdkMain}/${"12.0.0-beta.3"}`, params.application, params.integration, params.feature);
|
|
28
|
+
const adapter = createAdapter.createAdapter(Object.assign(Object.assign({}, params), { userAgent }));
|
|
29
|
+
// Parameters<?> and ReturnType<?> only return the types of the last overload
|
|
30
|
+
// https://github.com/microsoft/TypeScript/issues/26591
|
|
31
|
+
// @ts-expect-error
|
|
32
|
+
const makeRequest = (options) => adapter.makeRequest(Object.assign(Object.assign({}, options), { userAgent }));
|
|
33
|
+
if (opts.type === 'plain') {
|
|
34
|
+
return plainClient.createPlainClient(makeRequest, opts.defaults);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return createContentfulApi(makeRequest);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
exports.editorInterfaceDefaults = index__namespace;
|
|
42
|
+
exports.asIterator = asIterator.asIterator;
|
|
43
|
+
exports.fetchAll = paginationHelper.fetchAll;
|
|
44
|
+
exports.isDraft = checks.isDraft;
|
|
45
|
+
exports.isPublished = checks.isPublished;
|
|
46
|
+
exports.isUpdated = checks.isUpdated;
|
|
47
|
+
exports.RestAdapter = restAdapter.RestAdapter;
|
|
48
|
+
exports.makeRequest = makeRequest.makeRequest;
|
|
49
|
+
Object.defineProperty(exports, "ScheduledActionReferenceFilters", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () { return commonTypes.ScheduledActionReferenceFilters; }
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(exports, "WorkflowStepPermissionAction", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function () { return workflowDefinition.WorkflowStepPermissionAction; }
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(exports, "WorkflowStepPermissionEffect", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () { return workflowDefinition.WorkflowStepPermissionEffect; }
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "WorkflowStepPermissionType", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () { return workflowDefinition.WorkflowStepPermissionType; }
|
|
64
|
+
});
|
|
65
|
+
exports.createClient = createClient;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('./utils.js');
|
|
4
|
+
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
const DEFAULT_MAX_RETRIES = 30;
|
|
7
|
+
const DEFAULT_INITIAL_DELAY_MS = 1000;
|
|
8
|
+
const DEFAULT_RETRY_INTERVAL_MS = 2000;
|
|
9
|
+
class AsyncActionProcessingError extends Error {
|
|
10
|
+
constructor(message, action) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.action = action;
|
|
13
|
+
this.name = this.constructor.name;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class AsyncActionFailedError extends AsyncActionProcessingError {
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description Waits for an Action to be completed and to be in one of the final states (failed or succeeded)
|
|
20
|
+
* @param {Function} actionFunction - GET function that will be called every interval to fetch an Action status
|
|
21
|
+
* @throws {ActionFailedError} throws an error if `throwOnFailedExecution = true` with the Action that failed.
|
|
22
|
+
* @throws {AsyncActionProcessingError} throws an error with a Action when processing takes too long.
|
|
23
|
+
*/
|
|
24
|
+
async function pollAsyncActionStatus(actionFunction, options) {
|
|
25
|
+
var _a, _b, _c, _d;
|
|
26
|
+
let retryCount = 0;
|
|
27
|
+
let done = false;
|
|
28
|
+
let action;
|
|
29
|
+
const maxRetries = (_a = options === null || options === void 0 ? void 0 : options.retryCount) !== null && _a !== void 0 ? _a : DEFAULT_MAX_RETRIES;
|
|
30
|
+
const retryIntervalMs = (_b = options === null || options === void 0 ? void 0 : options.retryIntervalMs) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_INTERVAL_MS;
|
|
31
|
+
const initialDelayMs = (_c = options === null || options === void 0 ? void 0 : options.initialDelayMs) !== null && _c !== void 0 ? _c : DEFAULT_INITIAL_DELAY_MS;
|
|
32
|
+
const throwOnFailedExecution = (_d = options === null || options === void 0 ? void 0 : options.throwOnFailedExecution) !== null && _d !== void 0 ? _d : true;
|
|
33
|
+
// Initial delay for short-running Actions
|
|
34
|
+
await utils.sleep(initialDelayMs);
|
|
35
|
+
while (retryCount < maxRetries && !done) {
|
|
36
|
+
action = await actionFunction();
|
|
37
|
+
// Terminal states
|
|
38
|
+
if (action && ['succeeded', 'failed'].includes(action.sys.status)) {
|
|
39
|
+
done = true;
|
|
40
|
+
if (action.sys.status === 'failed' && throwOnFailedExecution) {
|
|
41
|
+
throw new AsyncActionFailedError(`${action.sys.type} failed to execute.`, action);
|
|
42
|
+
}
|
|
43
|
+
return action;
|
|
44
|
+
}
|
|
45
|
+
await utils.sleep(retryIntervalMs);
|
|
46
|
+
retryCount += 1;
|
|
47
|
+
}
|
|
48
|
+
throw new AsyncActionProcessingError(`${action === null || action === void 0 ? void 0 : action.sys.type} didn't finish processing within the expected timeframe.`, action);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.AsyncActionFailedError = AsyncActionFailedError;
|
|
52
|
+
exports.AsyncActionProcessingError = AsyncActionProcessingError;
|
|
53
|
+
exports.pollAsyncActionStatus = pollAsyncActionStatus;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @private
|
|
7
|
+
* @param id - unique ID of the field
|
|
8
|
+
* @param key - the attribute on the field to change
|
|
9
|
+
* @param value - the value to set the attribute to
|
|
10
|
+
*/
|
|
11
|
+
const findAndUpdateField = function (contentType, fieldId, omitOrDelete) {
|
|
12
|
+
const field = contentType.fields.find((field) => field.id === fieldId);
|
|
13
|
+
if (!field) {
|
|
14
|
+
return Promise.reject(new Error(`Tried to omitAndDeleteField on a nonexistent field, ${fieldId}, on the content type ${contentType.name}.`));
|
|
15
|
+
}
|
|
16
|
+
field[omitOrDelete] = true;
|
|
17
|
+
return Promise.resolve(contentType);
|
|
18
|
+
};
|
|
19
|
+
const omitAndDeleteField = (makeRequest, _a, contentType) => {
|
|
20
|
+
var { fieldId } = _a, params = tslib.__rest(_a, ["fieldId"]);
|
|
21
|
+
return findAndUpdateField(contentType, fieldId, 'omitted')
|
|
22
|
+
.then((newContentType) => {
|
|
23
|
+
return makeRequest({
|
|
24
|
+
entityType: 'ContentType',
|
|
25
|
+
action: 'update',
|
|
26
|
+
params,
|
|
27
|
+
payload: newContentType,
|
|
28
|
+
});
|
|
29
|
+
})
|
|
30
|
+
.then((newContentType) => {
|
|
31
|
+
return makeRequest({
|
|
32
|
+
entityType: 'ContentType',
|
|
33
|
+
action: 'publish',
|
|
34
|
+
params,
|
|
35
|
+
payload: newContentType,
|
|
36
|
+
});
|
|
37
|
+
})
|
|
38
|
+
.then((newContentType) => {
|
|
39
|
+
return findAndUpdateField(newContentType, fieldId, 'deleted');
|
|
40
|
+
})
|
|
41
|
+
.then((newContentType) => {
|
|
42
|
+
return makeRequest({
|
|
43
|
+
entityType: 'ContentType',
|
|
44
|
+
action: 'update',
|
|
45
|
+
params,
|
|
46
|
+
payload: newContentType,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.omitAndDeleteField = omitAndDeleteField;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helper function that resolves a Promise after the specified duration (in milliseconds)
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
7
|
+
function sleep(durationMs) {
|
|
8
|
+
return new Promise((resolve) => setTimeout(resolve, durationMs));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.sleep = sleep;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var copy = require('fast-copy');
|
|
4
|
+
|
|
5
|
+
const asIterator = (fn, params) => {
|
|
6
|
+
return {
|
|
7
|
+
[Symbol.asyncIterator]() {
|
|
8
|
+
let options = copy(params);
|
|
9
|
+
const get = () => fn(copy(options));
|
|
10
|
+
let currentResult = get();
|
|
11
|
+
return {
|
|
12
|
+
current: 0,
|
|
13
|
+
async next() {
|
|
14
|
+
const { total = 0, items = [], skip = 0, limit = 100 } = await currentResult;
|
|
15
|
+
if (total === this.current) {
|
|
16
|
+
return { done: true, value: null };
|
|
17
|
+
}
|
|
18
|
+
const value = items[this.current++ - skip];
|
|
19
|
+
const endOfPage = this.current % limit === 0;
|
|
20
|
+
const endOfList = this.current === total;
|
|
21
|
+
if (endOfPage && !endOfList) {
|
|
22
|
+
options = Object.assign(Object.assign({}, options), { query: Object.assign(Object.assign({}, options.query), { skip: skip + limit }) });
|
|
23
|
+
currentResult = get();
|
|
24
|
+
}
|
|
25
|
+
return { done: false, value };
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports.asIterator = asIterator;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const isPublished = (data) => !!data.sys.publishedVersion;
|
|
4
|
+
const isUpdated = (data) => {
|
|
5
|
+
// The act of publishing an entity increases its version by 1, so any entry which has
|
|
6
|
+
// 2 versions higher or more than the publishedVersion has unpublished changes.
|
|
7
|
+
return !!(data.sys.publishedVersion && data.sys.version > data.sys.publishedVersion + 1);
|
|
8
|
+
};
|
|
9
|
+
const isDraft = (data) => !data.sys.publishedVersion;
|
|
10
|
+
const isArchived = (data) => !!data.sys.archivedVersion;
|
|
11
|
+
|
|
12
|
+
exports.isArchived = isArchived;
|
|
13
|
+
exports.isDraft = isDraft;
|
|
14
|
+
exports.isPublished = isPublished;
|
|
15
|
+
exports.isUpdated = isUpdated;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function isOffsetBasedCollection(collection) {
|
|
4
|
+
return 'total' in collection;
|
|
5
|
+
}
|
|
6
|
+
function isCursorBasedCollection(collection) {
|
|
7
|
+
return 'pages' in collection;
|
|
8
|
+
}
|
|
9
|
+
function getSearchParam(url, paramName) {
|
|
10
|
+
const searchIndex = url.indexOf('?');
|
|
11
|
+
if (searchIndex < 0) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const rawSearchParams = url.slice(searchIndex + 1);
|
|
15
|
+
const searchParams = new URLSearchParams(rawSearchParams);
|
|
16
|
+
return searchParams.get(paramName);
|
|
17
|
+
}
|
|
18
|
+
function range(from, to) {
|
|
19
|
+
return Array.from(Array(Math.abs(to - from)), (_, i) => from + i);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parameters for endpoint methods that can be paginated are inconsistent, `fetchAll` will only
|
|
23
|
+
* work with the more common version of supplying the limit, skip, and pageNext parameters via a distinct `query` property in the
|
|
24
|
+
* parameters.
|
|
25
|
+
*/
|
|
26
|
+
async function fetchAll(fetchFn, params) {
|
|
27
|
+
const response = await fetchFn(Object.assign({}, params));
|
|
28
|
+
if (isOffsetBasedCollection(response)) {
|
|
29
|
+
const { total, limit, items } = response;
|
|
30
|
+
const hasMorePages = total > items.length;
|
|
31
|
+
if (!hasMorePages) {
|
|
32
|
+
return items;
|
|
33
|
+
}
|
|
34
|
+
const pageCount = Math.ceil(total / limit);
|
|
35
|
+
const promises = range(1, pageCount).map((page) => fetchFn(Object.assign(Object.assign({}, params), { query: Object.assign(Object.assign({}, params.query), { limit, skip: page * limit }) })).then((result) => result.items));
|
|
36
|
+
const remainingItems = await Promise.all(promises);
|
|
37
|
+
return [...items, ...remainingItems.flat(1)];
|
|
38
|
+
}
|
|
39
|
+
if (isCursorBasedCollection(response)) {
|
|
40
|
+
const { pages, items } = response;
|
|
41
|
+
if (!pages.next) {
|
|
42
|
+
return items;
|
|
43
|
+
}
|
|
44
|
+
const pageNext = getSearchParam(pages.next, 'pageNext');
|
|
45
|
+
if (!pageNext) {
|
|
46
|
+
throw new Error('Missing "pageNext" query param from pages.next from response.');
|
|
47
|
+
}
|
|
48
|
+
return [
|
|
49
|
+
...items,
|
|
50
|
+
...(await fetchAll(fetchFn, Object.assign(Object.assign({}, params), { query: Object.assign(Object.assign({}, params.query), { pageNext }) }))),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Can not determine collection type of response, neither property "total" nor "pages" are present.`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.fetchAll = fetchAll;
|