@datocms/cma-client 1.1.6 → 1.1.7

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.
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Workflow = exports.Site = exports.UploadSmartTag = exports.UploadTag = exports.UsageCounter = exports.DailyUsage = exports.PublicInfo = exports.WhiteLabelSettings = exports.SsoSettings = exports.SsoGroup = exports.EditingSession = exports.SiteInvitation = exports.UploadFilter = exports.ItemTypeFilter = exports.BuildTrigger = exports.WebhookCall = exports.Webhook = exports.MaintenanceMode = exports.Environment = exports.SearchResult = exports.ScheduledUnpublishing = exports.ScheduledPublication = exports.UploadRequest = exports.Upload = exports.ItemVersion = exports.Item = exports.BuildEvent = exports.SubscriptionFeature = exports.SubscriptionLimit = exports.JobResult = exports.Plugin = exports.AccessToken = exports.Session = exports.Fieldset = exports.Field = exports.ItemType = exports.MenuItem = exports.AuditLogEvent = exports.SsoUser = exports.User = exports.Role = void 0;
7
- var Role_1 = require("./Role");
7
+ var Role_1 = require("../../resources/Role");
8
8
  Object.defineProperty(exports, "Role", { enumerable: true, get: function () { return __importDefault(Role_1).default; } });
9
9
  var User_1 = require("./User");
10
10
  Object.defineProperty(exports, "User", { enumerable: true, get: function () { return __importDefault(User_1).default; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/resources/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,yDAAmE;AAA1D,uIAAA,OAAO,OAAqB;AACrC,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AACvC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AACxC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AACzC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AACtC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/resources/index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAuD;AAA9C,6GAAA,OAAO,OAAQ;AACxB,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,yDAAmE;AAA1D,uIAAA,OAAO,OAAqB;AACrC,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AACvC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AACxC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AACzC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AACtC,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
+ if (ar || !(i in from)) {
67
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
+ ar[i] = from[i];
69
+ }
70
+ }
71
+ return to.concat(ar || Array.prototype.slice.call(from));
72
+ };
73
+ var __importDefault = (this && this.__importDefault) || function (mod) {
74
+ return (mod && mod.__esModule) ? mod : { "default": mod };
75
+ };
76
+ Object.defineProperty(exports, "__esModule", { value: true });
77
+ var Role_1 = __importDefault(require("../generated/resources/Role"));
78
+ function sameValue(a, b) {
79
+ if ((a === undefined || a === null) && (b === undefined || b === null)) {
80
+ return true;
81
+ }
82
+ return a === b;
83
+ }
84
+ function sameRule(obj1, obj2) {
85
+ for (var key in Object.keys(obj1)) {
86
+ if (!sameValue(obj1[key], obj2[key]))
87
+ return false;
88
+ }
89
+ for (var key in Object.keys(obj2)) {
90
+ if (!sameValue(obj1[key], obj2[key]))
91
+ return false;
92
+ }
93
+ return true;
94
+ }
95
+ function applyChanges(currentRules, changes, currentEnvironmentId, context) {
96
+ if (!changes) {
97
+ return currentRules;
98
+ }
99
+ var rulesToAdd = changes.add, rulesToRemove = changes.remove;
100
+ return __spreadArray(__spreadArray([], (rulesToRemove
101
+ ? rulesToRemove.reduce(function (filteredRules, ruleToRemove) {
102
+ var ruleToRemoveWithEnvironmentId = __assign(__assign({}, ruleToRemove), { environment: currentEnvironmentId });
103
+ var foundRule = filteredRules.find(function (rule) {
104
+ return sameRule(rule, ruleToRemoveWithEnvironmentId);
105
+ });
106
+ if (!foundRule) {
107
+ throw new Error("Cannot find rule ".concat(JSON.stringify(ruleToRemoveWithEnvironmentId), " to remove in ").concat(context, "!"));
108
+ }
109
+ return filteredRules.filter(function (rule) { return rule !== foundRule; });
110
+ }, currentRules)
111
+ : currentRules), true), (rulesToAdd
112
+ ? rulesToAdd.map(function (change) {
113
+ return (__assign({ environment: currentEnvironmentId }, change));
114
+ })
115
+ : []), true);
116
+ }
117
+ var RoleResource = /** @class */ (function (_super) {
118
+ __extends(RoleResource, _super);
119
+ function RoleResource() {
120
+ return _super !== null && _super.apply(this, arguments) || this;
121
+ }
122
+ /**
123
+ * Applies a set of changes to the permissions of the current environment
124
+ */
125
+ RoleResource.prototype.updateCurrentEnvironmentPermissions = function (roleId, changes) {
126
+ return __awaiter(this, void 0, void 0, function () {
127
+ var currentEnvironmentId, _a, role, updateItemTypePermissions, updateUploadPermissions, body;
128
+ return __generator(this, function (_b) {
129
+ switch (_b.label) {
130
+ case 0:
131
+ _a = this.client.config.environment;
132
+ if (_a) return [3 /*break*/, 2];
133
+ return [4 /*yield*/, this.client.environments.list()];
134
+ case 1:
135
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
136
+ _a = (_b.sent()).find(function (environment) { return environment.meta.primary; }).id;
137
+ _b.label = 2;
138
+ case 2:
139
+ currentEnvironmentId = _a;
140
+ return [4 /*yield*/, this.find(roleId)];
141
+ case 3:
142
+ role = _b.sent();
143
+ updateItemTypePermissions = Boolean(changes.positive_item_type_permissions ||
144
+ changes.negative_item_type_permissions);
145
+ updateUploadPermissions = Boolean(changes.positive_upload_permissions ||
146
+ changes.negative_upload_permissions);
147
+ body = __assign(__assign({}, (updateItemTypePermissions
148
+ ? {
149
+ positive_item_type_permissions: applyChanges(role.positive_item_type_permissions, changes.positive_item_type_permissions, currentEnvironmentId, 'positive_item_type_permissions'),
150
+ negative_item_type_permissions: applyChanges(role.negative_item_type_permissions, changes.negative_item_type_permissions, currentEnvironmentId, 'negative_item_type_permissions'),
151
+ }
152
+ : {})), (updateUploadPermissions
153
+ ? {
154
+ positive_upload_permissions: applyChanges(role.positive_upload_permissions, changes.positive_upload_permissions, currentEnvironmentId, 'positive_upload_permissions'),
155
+ negative_upload_permissions: applyChanges(role.negative_upload_permissions, changes.negative_upload_permissions, currentEnvironmentId, 'negative_upload_permissions'),
156
+ }
157
+ : {}));
158
+ return [2 /*return*/, this.update(roleId, body)];
159
+ }
160
+ });
161
+ });
162
+ };
163
+ return RoleResource;
164
+ }(Role_1.default));
165
+ exports.default = RoleResource;
166
+ //# sourceMappingURL=Role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../src/resources/Role.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { default as Role } from './Role';
1
+ export { default as Role } from '../../resources/Role';
2
2
  export { default as User } from './User';
3
3
  export { default as SsoUser } from './SsoUser';
4
4
  export { default as AuditLogEvent } from './AuditLogEvent';
@@ -1,4 +1,4 @@
1
- export { default as Role } from './Role';
1
+ export { default as Role } from '../../resources/Role';
2
2
  export { default as User } from './User';
3
3
  export { default as SsoUser } from './SsoUser';
4
4
  export { default as AuditLogEvent } from './AuditLogEvent';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/resources/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generated/resources/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import BaseRole from '../generated/resources/Role';
2
+ import * as SimpleSchemaTypes from '../generated/SimpleSchemaTypes';
3
+ export declare type UpdateRoleDiff<T> = {
4
+ add?: Omit<T, 'environment'>[];
5
+ remove?: Omit<T, 'environment'>[];
6
+ };
7
+ export declare type RoleItemTypePermission = SimpleSchemaTypes.RoleAttributes['positive_item_type_permissions'][0];
8
+ export declare type RoleUploadPermission = SimpleSchemaTypes.RoleAttributes['positive_upload_permissions'][0];
9
+ declare type UpdateCurrentEnvironmentPermissionsChanges = {
10
+ positive_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
11
+ negative_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
12
+ positive_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
13
+ negative_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
14
+ };
15
+ export default class RoleResource extends BaseRole {
16
+ /**
17
+ * Applies a set of changes to the permissions of the current environment
18
+ */
19
+ updateCurrentEnvironmentPermissions(roleId: string | SimpleSchemaTypes.RoleData, changes: UpdateCurrentEnvironmentPermissionsChanges): Promise<SimpleSchemaTypes.Role>;
20
+ }
21
+ export {};
@@ -0,0 +1,161 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __assign = (this && this.__assign) || function () {
17
+ __assign = Object.assign || function(t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
+ t[p] = s[p];
22
+ }
23
+ return t;
24
+ };
25
+ return __assign.apply(this, arguments);
26
+ };
27
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
28
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
29
+ return new (P || (P = Promise))(function (resolve, reject) {
30
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
31
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
32
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
33
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
34
+ });
35
+ };
36
+ var __generator = (this && this.__generator) || function (thisArg, body) {
37
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
38
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
39
+ function verb(n) { return function (v) { return step([n, v]); }; }
40
+ function step(op) {
41
+ if (f) throw new TypeError("Generator is already executing.");
42
+ while (_) try {
43
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
44
+ if (y = 0, t) op = [op[0] & 2, t.value];
45
+ switch (op[0]) {
46
+ case 0: case 1: t = op; break;
47
+ case 4: _.label++; return { value: op[1], done: false };
48
+ case 5: _.label++; y = op[1]; op = [0]; continue;
49
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
50
+ default:
51
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
52
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
53
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
54
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
55
+ if (t[2]) _.ops.pop();
56
+ _.trys.pop(); continue;
57
+ }
58
+ op = body.call(thisArg, _);
59
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
60
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
61
+ }
62
+ };
63
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
64
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
65
+ if (ar || !(i in from)) {
66
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
67
+ ar[i] = from[i];
68
+ }
69
+ }
70
+ return to.concat(ar || Array.prototype.slice.call(from));
71
+ };
72
+ import BaseRole from '../generated/resources/Role';
73
+ function sameValue(a, b) {
74
+ if ((a === undefined || a === null) && (b === undefined || b === null)) {
75
+ return true;
76
+ }
77
+ return a === b;
78
+ }
79
+ function sameRule(obj1, obj2) {
80
+ for (var key in Object.keys(obj1)) {
81
+ if (!sameValue(obj1[key], obj2[key]))
82
+ return false;
83
+ }
84
+ for (var key in Object.keys(obj2)) {
85
+ if (!sameValue(obj1[key], obj2[key]))
86
+ return false;
87
+ }
88
+ return true;
89
+ }
90
+ function applyChanges(currentRules, changes, currentEnvironmentId, context) {
91
+ if (!changes) {
92
+ return currentRules;
93
+ }
94
+ var rulesToAdd = changes.add, rulesToRemove = changes.remove;
95
+ return __spreadArray(__spreadArray([], (rulesToRemove
96
+ ? rulesToRemove.reduce(function (filteredRules, ruleToRemove) {
97
+ var ruleToRemoveWithEnvironmentId = __assign(__assign({}, ruleToRemove), { environment: currentEnvironmentId });
98
+ var foundRule = filteredRules.find(function (rule) {
99
+ return sameRule(rule, ruleToRemoveWithEnvironmentId);
100
+ });
101
+ if (!foundRule) {
102
+ throw new Error("Cannot find rule ".concat(JSON.stringify(ruleToRemoveWithEnvironmentId), " to remove in ").concat(context, "!"));
103
+ }
104
+ return filteredRules.filter(function (rule) { return rule !== foundRule; });
105
+ }, currentRules)
106
+ : currentRules), true), (rulesToAdd
107
+ ? rulesToAdd.map(function (change) {
108
+ return (__assign({ environment: currentEnvironmentId }, change));
109
+ })
110
+ : []), true);
111
+ }
112
+ var RoleResource = /** @class */ (function (_super) {
113
+ __extends(RoleResource, _super);
114
+ function RoleResource() {
115
+ return _super !== null && _super.apply(this, arguments) || this;
116
+ }
117
+ /**
118
+ * Applies a set of changes to the permissions of the current environment
119
+ */
120
+ RoleResource.prototype.updateCurrentEnvironmentPermissions = function (roleId, changes) {
121
+ return __awaiter(this, void 0, void 0, function () {
122
+ var currentEnvironmentId, _a, role, updateItemTypePermissions, updateUploadPermissions, body;
123
+ return __generator(this, function (_b) {
124
+ switch (_b.label) {
125
+ case 0:
126
+ _a = this.client.config.environment;
127
+ if (_a) return [3 /*break*/, 2];
128
+ return [4 /*yield*/, this.client.environments.list()];
129
+ case 1:
130
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
131
+ _a = (_b.sent()).find(function (environment) { return environment.meta.primary; }).id;
132
+ _b.label = 2;
133
+ case 2:
134
+ currentEnvironmentId = _a;
135
+ return [4 /*yield*/, this.find(roleId)];
136
+ case 3:
137
+ role = _b.sent();
138
+ updateItemTypePermissions = Boolean(changes.positive_item_type_permissions ||
139
+ changes.negative_item_type_permissions);
140
+ updateUploadPermissions = Boolean(changes.positive_upload_permissions ||
141
+ changes.negative_upload_permissions);
142
+ body = __assign(__assign({}, (updateItemTypePermissions
143
+ ? {
144
+ positive_item_type_permissions: applyChanges(role.positive_item_type_permissions, changes.positive_item_type_permissions, currentEnvironmentId, 'positive_item_type_permissions'),
145
+ negative_item_type_permissions: applyChanges(role.negative_item_type_permissions, changes.negative_item_type_permissions, currentEnvironmentId, 'negative_item_type_permissions'),
146
+ }
147
+ : {})), (updateUploadPermissions
148
+ ? {
149
+ positive_upload_permissions: applyChanges(role.positive_upload_permissions, changes.positive_upload_permissions, currentEnvironmentId, 'positive_upload_permissions'),
150
+ negative_upload_permissions: applyChanges(role.negative_upload_permissions, changes.negative_upload_permissions, currentEnvironmentId, 'negative_upload_permissions'),
151
+ }
152
+ : {}));
153
+ return [2 /*return*/, this.update(roleId, body)];
154
+ }
155
+ });
156
+ });
157
+ };
158
+ return RoleResource;
159
+ }(BaseRole));
160
+ export default RoleResource;
161
+ //# sourceMappingURL=Role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../src/resources/Role.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { default as Role } from './Role';
1
+ export { default as Role } from '../../resources/Role';
2
2
  export { default as User } from './User';
3
3
  export { default as SsoUser } from './SsoUser';
4
4
  export { default as AuditLogEvent } from './AuditLogEvent';
@@ -0,0 +1,21 @@
1
+ import BaseRole from '../generated/resources/Role';
2
+ import * as SimpleSchemaTypes from '../generated/SimpleSchemaTypes';
3
+ export declare type UpdateRoleDiff<T> = {
4
+ add?: Omit<T, 'environment'>[];
5
+ remove?: Omit<T, 'environment'>[];
6
+ };
7
+ export declare type RoleItemTypePermission = SimpleSchemaTypes.RoleAttributes['positive_item_type_permissions'][0];
8
+ export declare type RoleUploadPermission = SimpleSchemaTypes.RoleAttributes['positive_upload_permissions'][0];
9
+ declare type UpdateCurrentEnvironmentPermissionsChanges = {
10
+ positive_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
11
+ negative_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
12
+ positive_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
13
+ negative_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
14
+ };
15
+ export default class RoleResource extends BaseRole {
16
+ /**
17
+ * Applies a set of changes to the permissions of the current environment
18
+ */
19
+ updateCurrentEnvironmentPermissions(roleId: string | SimpleSchemaTypes.RoleData, changes: UpdateCurrentEnvironmentPermissionsChanges): Promise<SimpleSchemaTypes.Role>;
20
+ }
21
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datocms/cma-client",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "JS client for DatoCMS REST Content Management API",
5
5
  "keywords": [
6
6
  "datocms",
@@ -42,5 +42,5 @@
42
42
  "devDependencies": {
43
43
  "@datocms/dashboard-client": "^1.1.5"
44
44
  },
45
- "gitHead": "41bd5716a8c5525fb9bef069388d469b38d8e922"
45
+ "gitHead": "73df11fe0f485d81d8a081d944f43eb55dac00a7"
46
46
  }
@@ -1,4 +1,4 @@
1
- export { default as Role } from './Role';
1
+ export { default as Role } from '../../resources/Role';
2
2
  export { default as User } from './User';
3
3
  export { default as SsoUser } from './SsoUser';
4
4
  export { default as AuditLogEvent } from './AuditLogEvent';
@@ -0,0 +1,155 @@
1
+ import BaseRole from '../generated/resources/Role';
2
+ import * as SimpleSchemaTypes from '../generated/SimpleSchemaTypes';
3
+
4
+ export type UpdateRoleDiff<T> = {
5
+ add?: Omit<T, 'environment'>[];
6
+ remove?: Omit<T, 'environment'>[];
7
+ };
8
+
9
+ export type RoleItemTypePermission =
10
+ SimpleSchemaTypes.RoleAttributes['positive_item_type_permissions'][0];
11
+
12
+ export type RoleUploadPermission =
13
+ SimpleSchemaTypes.RoleAttributes['positive_upload_permissions'][0];
14
+
15
+ type UpdateCurrentEnvironmentPermissionsChanges = {
16
+ positive_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
17
+ negative_item_type_permissions?: UpdateRoleDiff<RoleItemTypePermission>;
18
+ positive_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
19
+ negative_upload_permissions?: UpdateRoleDiff<RoleUploadPermission>;
20
+ };
21
+
22
+ function sameValue(a: unknown, b: unknown) {
23
+ if ((a === undefined || a === null) && (b === undefined || b === null)) {
24
+ return true;
25
+ }
26
+ return a === b;
27
+ }
28
+
29
+ function sameRule(
30
+ obj1: Record<string, unknown>,
31
+ obj2: Record<string, unknown>,
32
+ ): boolean {
33
+ for (const key in Object.keys(obj1)) {
34
+ if (!sameValue(obj1[key], obj2[key])) return false;
35
+ }
36
+
37
+ for (const key in Object.keys(obj2)) {
38
+ if (!sameValue(obj1[key], obj2[key])) return false;
39
+ }
40
+
41
+ return true;
42
+ }
43
+
44
+ function applyChanges<T extends Record<PropertyKey, unknown>>(
45
+ currentRules: T[],
46
+ changes: UpdateRoleDiff<T> | undefined,
47
+ currentEnvironmentId: string,
48
+ context: string,
49
+ ): T[] {
50
+ if (!changes) {
51
+ return currentRules;
52
+ }
53
+
54
+ const { add: rulesToAdd, remove: rulesToRemove } = changes;
55
+
56
+ return [
57
+ ...(rulesToRemove
58
+ ? rulesToRemove.reduce((filteredRules, ruleToRemove) => {
59
+ const ruleToRemoveWithEnvironmentId = {
60
+ ...ruleToRemove,
61
+ environment: currentEnvironmentId,
62
+ };
63
+
64
+ const foundRule = filteredRules.find((rule) =>
65
+ sameRule(rule, ruleToRemoveWithEnvironmentId),
66
+ );
67
+
68
+ if (!foundRule) {
69
+ throw new Error(
70
+ `Cannot find rule ${JSON.stringify(
71
+ ruleToRemoveWithEnvironmentId,
72
+ )} to remove in ${context}!`,
73
+ );
74
+ }
75
+
76
+ return filteredRules.filter((rule) => rule !== foundRule);
77
+ }, currentRules)
78
+ : currentRules),
79
+ ...(rulesToAdd
80
+ ? rulesToAdd.map(
81
+ (change) =>
82
+ ({
83
+ environment: currentEnvironmentId,
84
+ ...change,
85
+ } as unknown as T),
86
+ )
87
+ : []),
88
+ ];
89
+ }
90
+
91
+ export default class RoleResource extends BaseRole {
92
+ /**
93
+ * Applies a set of changes to the permissions of the current environment
94
+ */
95
+ async updateCurrentEnvironmentPermissions(
96
+ roleId: string | SimpleSchemaTypes.RoleData,
97
+ changes: UpdateCurrentEnvironmentPermissionsChanges,
98
+ ): Promise<SimpleSchemaTypes.Role> {
99
+ const currentEnvironmentId =
100
+ this.client.config.environment ||
101
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
102
+ (await this.client.environments.list()).find(
103
+ (environment) => environment.meta.primary,
104
+ )!.id;
105
+
106
+ const role = await this.find(roleId);
107
+
108
+ const updateItemTypePermissions = Boolean(
109
+ changes.positive_item_type_permissions ||
110
+ changes.negative_item_type_permissions,
111
+ );
112
+
113
+ const updateUploadPermissions = Boolean(
114
+ changes.positive_upload_permissions ||
115
+ changes.negative_upload_permissions,
116
+ );
117
+
118
+ const body: SimpleSchemaTypes.RoleUpdateSchema = {
119
+ ...(updateItemTypePermissions
120
+ ? {
121
+ positive_item_type_permissions: applyChanges(
122
+ role.positive_item_type_permissions,
123
+ changes.positive_item_type_permissions,
124
+ currentEnvironmentId,
125
+ 'positive_item_type_permissions',
126
+ ),
127
+ negative_item_type_permissions: applyChanges(
128
+ role.negative_item_type_permissions,
129
+ changes.negative_item_type_permissions,
130
+ currentEnvironmentId,
131
+ 'negative_item_type_permissions',
132
+ ),
133
+ }
134
+ : {}),
135
+ ...(updateUploadPermissions
136
+ ? {
137
+ positive_upload_permissions: applyChanges(
138
+ role.positive_upload_permissions,
139
+ changes.positive_upload_permissions,
140
+ currentEnvironmentId,
141
+ 'positive_upload_permissions',
142
+ ),
143
+ negative_upload_permissions: applyChanges(
144
+ role.negative_upload_permissions,
145
+ changes.negative_upload_permissions,
146
+ currentEnvironmentId,
147
+ 'negative_upload_permissions',
148
+ ),
149
+ }
150
+ : {}),
151
+ };
152
+
153
+ return this.update(roleId, body);
154
+ }
155
+ }