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.
Files changed (172) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/adapters/REST/endpoints/access-token.cjs +136 -0
  3. package/dist/cjs/adapters/REST/endpoints/ai-action-invocation.cjs +9 -0
  4. package/dist/cjs/adapters/REST/endpoints/ai-action.cjs +53 -0
  5. package/dist/cjs/adapters/REST/endpoints/api-key.cjs +48 -0
  6. package/dist/cjs/adapters/REST/endpoints/app-access-token.cjs +9 -0
  7. package/dist/cjs/adapters/REST/endpoints/app-action-call.cjs +65 -0
  8. package/dist/cjs/adapters/REST/endpoints/app-action.cjs +42 -0
  9. package/dist/cjs/adapters/REST/endpoints/app-bundle.cjs +39 -0
  10. package/dist/cjs/adapters/REST/endpoints/app-definition.cjs +47 -0
  11. package/dist/cjs/adapters/REST/endpoints/app-details.cjs +17 -0
  12. package/dist/cjs/adapters/REST/endpoints/app-event-subscription.cjs +17 -0
  13. package/dist/cjs/adapters/REST/endpoints/app-installation.cjs +42 -0
  14. package/dist/cjs/adapters/REST/endpoints/app-key.cjs +21 -0
  15. package/dist/cjs/adapters/REST/endpoints/app-signed-request.cjs +9 -0
  16. package/dist/cjs/adapters/REST/endpoints/app-signing-secret.cjs +17 -0
  17. package/dist/cjs/adapters/REST/endpoints/app-upload.cjs +28 -0
  18. package/dist/cjs/adapters/REST/endpoints/asset-key.cjs +34 -0
  19. package/dist/cjs/adapters/REST/endpoints/asset.cjs +185 -0
  20. package/dist/cjs/adapters/REST/endpoints/bulk-action.cjs +21 -0
  21. package/dist/cjs/adapters/REST/endpoints/comment.cjs +92 -0
  22. package/dist/cjs/adapters/REST/endpoints/concept-scheme.cjs +44 -0
  23. package/dist/cjs/adapters/REST/endpoints/concept.cjs +65 -0
  24. package/dist/cjs/adapters/REST/endpoints/content-type.cjs +56 -0
  25. package/dist/cjs/adapters/REST/endpoints/editor-interface.cjs +24 -0
  26. package/dist/cjs/adapters/REST/endpoints/entry.cjs +104 -0
  27. package/dist/cjs/adapters/REST/endpoints/environment-alias.cjs +44 -0
  28. package/dist/cjs/adapters/REST/endpoints/environment-template-installation.cjs +23 -0
  29. package/dist/cjs/adapters/REST/endpoints/environment-template.cjs +49 -0
  30. package/dist/cjs/adapters/REST/endpoints/environment.cjs +47 -0
  31. package/dist/cjs/adapters/REST/endpoints/extension.cjs +44 -0
  32. package/dist/cjs/adapters/REST/endpoints/function-log.cjs +23 -0
  33. package/dist/cjs/adapters/REST/endpoints/function.cjs +25 -0
  34. package/dist/cjs/adapters/REST/endpoints/http.cjs +29 -0
  35. package/dist/cjs/adapters/REST/endpoints/index.cjs +139 -0
  36. package/dist/cjs/adapters/REST/endpoints/locale.cjs +37 -0
  37. package/dist/cjs/adapters/REST/endpoints/oauth-application.cjs +147 -0
  38. package/dist/cjs/adapters/REST/endpoints/organization-invitation.cjs +23 -0
  39. package/dist/cjs/adapters/REST/endpoints/organization-membership.cjs +32 -0
  40. package/dist/cjs/adapters/REST/endpoints/organization.cjs +28 -0
  41. package/dist/cjs/adapters/REST/endpoints/personal-access-token.cjs +37 -0
  42. package/dist/cjs/adapters/REST/endpoints/preview-api-key.cjs +15 -0
  43. package/dist/cjs/adapters/REST/endpoints/raw.cjs +44 -0
  44. package/dist/cjs/adapters/REST/endpoints/release-action.cjs +21 -0
  45. package/dist/cjs/adapters/REST/endpoints/release.cjs +61 -0
  46. package/dist/cjs/adapters/REST/endpoints/resource-provider.cjs +18 -0
  47. package/dist/cjs/adapters/REST/endpoints/resource-type.cjs +30 -0
  48. package/dist/cjs/adapters/REST/endpoints/resource.cjs +10 -0
  49. package/dist/cjs/adapters/REST/endpoints/role.cjs +48 -0
  50. package/dist/cjs/adapters/REST/endpoints/scheduled-action.cjs +44 -0
  51. package/dist/cjs/adapters/REST/endpoints/snapshot.cjs +30 -0
  52. package/dist/cjs/adapters/REST/endpoints/space-member.cjs +11 -0
  53. package/dist/cjs/adapters/REST/endpoints/space-membership.cjs +60 -0
  54. package/dist/cjs/adapters/REST/endpoints/space.cjs +34 -0
  55. package/dist/cjs/adapters/REST/endpoints/tag.cjs +37 -0
  56. package/dist/cjs/adapters/REST/endpoints/task.cjs +40 -0
  57. package/dist/cjs/adapters/REST/endpoints/team-membership.cjs +35 -0
  58. package/dist/cjs/adapters/REST/endpoints/team-space-membership.cjs +46 -0
  59. package/dist/cjs/adapters/REST/endpoints/team.cjs +36 -0
  60. package/dist/cjs/adapters/REST/endpoints/ui-config.cjs +22 -0
  61. package/dist/cjs/adapters/REST/endpoints/upload-credentials.cjs +16 -0
  62. package/dist/cjs/adapters/REST/endpoints/upload.cjs +42 -0
  63. package/dist/cjs/adapters/REST/endpoints/usage.cjs +17 -0
  64. package/dist/cjs/adapters/REST/endpoints/user-ui-config.cjs +22 -0
  65. package/dist/cjs/adapters/REST/endpoints/user.cjs +27 -0
  66. package/dist/cjs/adapters/REST/endpoints/utils.cjs +20 -0
  67. package/dist/cjs/adapters/REST/endpoints/webhook.cjs +98 -0
  68. package/dist/cjs/adapters/REST/endpoints/workflow-definition.cjs +41 -0
  69. package/dist/cjs/adapters/REST/endpoints/workflow.cjs +49 -0
  70. package/dist/cjs/adapters/REST/endpoints/workflows-changelog.cjs +11 -0
  71. package/dist/cjs/adapters/REST/make-request.cjs +19 -0
  72. package/dist/cjs/adapters/REST/rest-adapter.cjs +32 -0
  73. package/dist/cjs/common-types.cjs +6 -0
  74. package/dist/cjs/common-utils.cjs +38 -0
  75. package/dist/cjs/constants/editor-interface-defaults/controls-defaults.cjs +161 -0
  76. package/dist/cjs/constants/editor-interface-defaults/editors-defaults.cjs +40 -0
  77. package/dist/cjs/constants/editor-interface-defaults/index.cjs +14 -0
  78. package/dist/cjs/constants/editor-interface-defaults/sidebar-defaults.cjs +71 -0
  79. package/dist/cjs/constants/editor-interface-defaults/types.cjs +18 -0
  80. package/dist/cjs/create-adapter.cjs +21 -0
  81. package/dist/cjs/create-app-definition-api.cjs +254 -0
  82. package/dist/cjs/create-contentful-api.cjs +592 -0
  83. package/dist/cjs/create-entry-api.cjs +481 -0
  84. package/dist/cjs/create-environment-api.cjs +2403 -0
  85. package/dist/cjs/create-environment-template-api.cjs +270 -0
  86. package/dist/cjs/create-organization-api.cjs +1136 -0
  87. package/dist/cjs/create-space-api.cjs +1591 -0
  88. package/dist/cjs/create-ui-config-api.cjs +55 -0
  89. package/dist/cjs/create-user-ui-config-api.cjs +55 -0
  90. package/dist/cjs/enhance-with-methods.cjs +26 -0
  91. package/dist/cjs/entities/access-token.cjs +36 -0
  92. package/dist/cjs/entities/ai-action-invocation.cjs +46 -0
  93. package/dist/cjs/entities/ai-action.cjs +94 -0
  94. package/dist/cjs/entities/api-key.cjs +59 -0
  95. package/dist/cjs/entities/app-access-token.cjs +17 -0
  96. package/dist/cjs/entities/app-action-call.cjs +67 -0
  97. package/dist/cjs/entities/app-action.cjs +48 -0
  98. package/dist/cjs/entities/app-bundle.cjs +48 -0
  99. package/dist/cjs/entities/app-definition.cjs +29 -0
  100. package/dist/cjs/entities/app-details.cjs +39 -0
  101. package/dist/cjs/entities/app-event-subscription.cjs +34 -0
  102. package/dist/cjs/entities/app-installation.cjs +55 -0
  103. package/dist/cjs/entities/app-key.cjs +44 -0
  104. package/dist/cjs/entities/app-signed-request.cjs +17 -0
  105. package/dist/cjs/entities/app-signing-secret.cjs +34 -0
  106. package/dist/cjs/entities/app-upload.cjs +47 -0
  107. package/dist/cjs/entities/asset-key.cjs +17 -0
  108. package/dist/cjs/entities/asset.cjs +124 -0
  109. package/dist/cjs/entities/bulk-action.cjs +60 -0
  110. package/dist/cjs/entities/comment.cjs +63 -0
  111. package/dist/cjs/entities/concept-scheme.cjs +2 -0
  112. package/dist/cjs/entities/concept.cjs +2 -0
  113. package/dist/cjs/entities/content-type.cjs +120 -0
  114. package/dist/cjs/entities/editor-interface.cjs +50 -0
  115. package/dist/cjs/entities/entry.cjs +27 -0
  116. package/dist/cjs/entities/environment-alias.cjs +58 -0
  117. package/dist/cjs/entities/environment-template-installation.cjs +23 -0
  118. package/dist/cjs/entities/environment-template.cjs +18 -0
  119. package/dist/cjs/entities/environment.cjs +34 -0
  120. package/dist/cjs/entities/extension.cjs +54 -0
  121. package/dist/cjs/entities/function-log.cjs +26 -0
  122. package/dist/cjs/entities/function.cjs +66 -0
  123. package/dist/cjs/entities/index.cjs +131 -0
  124. package/dist/cjs/entities/locale.cjs +57 -0
  125. package/dist/cjs/entities/oauth-application.cjs +66 -0
  126. package/dist/cjs/entities/organization-invitation.cjs +17 -0
  127. package/dist/cjs/entities/organization-membership.cjs +53 -0
  128. package/dist/cjs/entities/organization.cjs +32 -0
  129. package/dist/cjs/entities/personal-access-token.cjs +36 -0
  130. package/dist/cjs/entities/preview-api-key.cjs +31 -0
  131. package/dist/cjs/entities/release-action.cjs +55 -0
  132. package/dist/cjs/entities/release.cjs +111 -0
  133. package/dist/cjs/entities/resource-provider.cjs +139 -0
  134. package/dist/cjs/entities/resource-type.cjs +98 -0
  135. package/dist/cjs/entities/resource.cjs +13 -0
  136. package/dist/cjs/entities/role.cjs +53 -0
  137. package/dist/cjs/entities/scheduled-action.cjs +154 -0
  138. package/dist/cjs/entities/snapshot.cjs +36 -0
  139. package/dist/cjs/entities/space-member.cjs +23 -0
  140. package/dist/cjs/entities/space-membership.cjs +53 -0
  141. package/dist/cjs/entities/space.cjs +33 -0
  142. package/dist/cjs/entities/tag.cjs +56 -0
  143. package/dist/cjs/entities/task.cjs +57 -0
  144. package/dist/cjs/entities/team-membership.cjs +54 -0
  145. package/dist/cjs/entities/team-space-membership.cjs +53 -0
  146. package/dist/cjs/entities/team.cjs +53 -0
  147. package/dist/cjs/entities/ui-config.cjs +20 -0
  148. package/dist/cjs/entities/upload.cjs +38 -0
  149. package/dist/cjs/entities/usage.cjs +25 -0
  150. package/dist/cjs/entities/user-ui-config.cjs +20 -0
  151. package/dist/cjs/entities/user.cjs +28 -0
  152. package/dist/cjs/entities/webhook.cjs +77 -0
  153. package/dist/cjs/entities/workflow-definition.cjs +79 -0
  154. package/dist/cjs/index.cjs +65 -0
  155. package/dist/cjs/methods/action.cjs +53 -0
  156. package/dist/cjs/methods/content-type.cjs +51 -0
  157. package/dist/cjs/methods/utils.cjs +11 -0
  158. package/dist/cjs/plain/as-iterator.cjs +32 -0
  159. package/dist/cjs/plain/checks.cjs +15 -0
  160. package/dist/cjs/plain/pagination-helper.cjs +56 -0
  161. package/dist/cjs/plain/plain-client.cjs +516 -0
  162. package/dist/cjs/plain/wrappers/wrap.cjs +26 -0
  163. package/dist/cjs/upload-http-client.cjs +17 -0
  164. package/dist/contentful-management.browser.js +50 -34
  165. package/dist/contentful-management.browser.min.js +1 -1
  166. package/dist/contentful-management.cjs +35 -19
  167. package/dist/esm/create-contentful-api.js +1 -1
  168. package/dist/esm/index.js +1 -1
  169. package/dist/esm/plain/plain-client.js +1 -1
  170. package/dist/stats-browser-min.html +1 -1
  171. package/package.json +6 -6
  172. 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;