sf-plugin-permission-sets 0.0.0-dev.7 → 0.0.0-dev.70
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/LICENSE.md +28 -0
- package/README.md +304 -88
- package/lib/adapters/connection-org-client.d.ts +23 -0
- package/lib/adapters/connection-org-client.d.ts.map +1 -0
- package/lib/adapters/connection-org-client.js +361 -0
- package/lib/adapters/connection-org-client.js.map +1 -0
- package/lib/adapters/index.d.ts +2 -0
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/adapters/index.js +2 -0
- package/lib/adapters/index.js.map +1 -0
- package/lib/commands/ps/apply.d.ts +41 -0
- package/lib/commands/ps/apply.d.ts.map +1 -0
- package/lib/commands/ps/apply.js +178 -0
- package/lib/commands/ps/apply.js.map +1 -0
- package/lib/commands/ps/check.d.ts +21 -0
- package/lib/commands/ps/check.d.ts.map +1 -0
- package/lib/commands/ps/check.js +55 -0
- package/lib/commands/ps/check.js.map +1 -0
- package/lib/commands/ps/export.d.ts +26 -0
- package/lib/commands/ps/export.d.ts.map +1 -0
- package/lib/commands/ps/export.js +74 -0
- package/lib/commands/ps/export.js.map +1 -0
- package/lib/commands/ps/plan.d.ts +61 -0
- package/lib/commands/ps/plan.d.ts.map +1 -0
- package/lib/commands/ps/plan.js +212 -0
- package/lib/commands/ps/plan.js.map +1 -0
- package/lib/commands/ps/validate.d.ts +21 -0
- package/lib/commands/ps/validate.d.ts.map +1 -0
- package/lib/commands/ps/validate.js +56 -0
- package/lib/commands/ps/validate.js.map +1 -0
- package/lib/core/diff.d.ts +10 -0
- package/lib/core/diff.d.ts.map +1 -0
- package/lib/core/diff.js +54 -0
- package/lib/core/diff.js.map +1 -0
- package/lib/core/finding.d.ts +41 -0
- package/lib/core/finding.d.ts.map +1 -0
- package/lib/core/finding.js +76 -0
- package/lib/core/finding.js.map +1 -0
- package/lib/core/index.d.ts +10 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/index.js +9 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/load.d.ts +4 -0
- package/lib/core/load.d.ts.map +1 -0
- package/lib/core/load.js +60 -0
- package/lib/core/load.js.map +1 -0
- package/lib/core/mode.d.ts +18 -0
- package/lib/core/mode.d.ts.map +1 -0
- package/lib/core/mode.js +16 -0
- package/lib/core/mode.js.map +1 -0
- package/lib/core/model.d.ts +78 -0
- package/lib/core/model.d.ts.map +1 -0
- package/lib/core/model.js +2 -0
- package/lib/core/model.js.map +1 -0
- package/lib/core/normalize.d.ts +17 -0
- package/lib/core/normalize.d.ts.map +1 -0
- package/lib/core/normalize.js +72 -0
- package/lib/core/normalize.js.map +1 -0
- package/lib/core/parse.d.ts +10 -0
- package/lib/core/parse.d.ts.map +1 -0
- package/lib/core/parse.js +20 -0
- package/lib/core/parse.js.map +1 -0
- package/lib/core/report.d.ts +15 -0
- package/lib/core/report.d.ts.map +1 -0
- package/lib/core/report.js +122 -0
- package/lib/core/report.js.map +1 -0
- package/lib/core/resolve.d.ts +20 -0
- package/lib/core/resolve.d.ts.map +1 -0
- package/lib/core/resolve.js +88 -0
- package/lib/core/resolve.js.map +1 -0
- package/lib/core/schema.d.ts +23 -0
- package/lib/core/schema.d.ts.map +1 -0
- package/lib/core/schema.js +35 -0
- package/lib/core/schema.js.map +1 -0
- package/lib/core/serialize.d.ts +9 -0
- package/lib/core/serialize.d.ts.map +1 -0
- package/lib/core/serialize.js +36 -0
- package/lib/core/serialize.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/services/adapters/index.d.ts +2 -0
- package/lib/services/adapters/index.d.ts.map +1 -0
- package/lib/services/adapters/index.js +2 -0
- package/lib/services/adapters/index.js.map +1 -0
- package/lib/services/adapters/org-client.d.ts +26 -0
- package/lib/services/adapters/org-client.d.ts.map +1 -0
- package/lib/services/adapters/org-client.js +2 -0
- package/lib/services/adapters/org-client.js.map +1 -0
- package/lib/services/apply.d.ts +39 -0
- package/lib/services/apply.d.ts.map +1 -0
- package/lib/services/apply.js +85 -0
- package/lib/services/apply.js.map +1 -0
- package/lib/services/check.d.ts +14 -0
- package/lib/services/check.d.ts.map +1 -0
- package/lib/services/check.js +18 -0
- package/lib/services/check.js.map +1 -0
- package/lib/services/export.d.ts +19 -0
- package/lib/services/export.d.ts.map +1 -0
- package/lib/services/export.js +29 -0
- package/lib/services/export.js.map +1 -0
- package/lib/services/index.d.ts +6 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +6 -0
- package/lib/services/index.js.map +1 -0
- package/lib/services/plan.d.ts +29 -0
- package/lib/services/plan.d.ts.map +1 -0
- package/lib/services/plan.js +51 -0
- package/lib/services/plan.js.map +1 -0
- package/lib/services/resolution.d.ts +18 -0
- package/lib/services/resolution.d.ts.map +1 -0
- package/lib/services/resolution.js +59 -0
- package/lib/services/resolution.js.map +1 -0
- package/lib/services/validate.d.ts +22 -0
- package/lib/services/validate.d.ts.map +1 -0
- package/lib/services/validate.js +59 -0
- package/lib/services/validate.js.map +1 -0
- package/messages/ps.apply.md +85 -0
- package/messages/ps.check.md +33 -0
- package/messages/ps.export.md +45 -0
- package/messages/ps.plan.md +85 -0
- package/messages/ps.validate.md +29 -0
- package/package.json +119 -180
- package/lib/commands/ps/info.d.ts +0 -11
- package/lib/commands/ps/info.js +0 -17
- package/lib/commands/ps/info.js.map +0 -1
- package/messages/ps.info.md +0 -17
- package/oclif.lock +0 -7781
- package/oclif.manifest.json +0 -51
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/** SObject + foreign-key field to set per kind when assigning. */
|
|
2
|
+
const assignmentObjects = {
|
|
3
|
+
permissionSet: { sobject: 'PermissionSetAssignment', idField: 'PermissionSetId' },
|
|
4
|
+
permissionSetGroup: { sobject: 'PermissionSetAssignment', idField: 'PermissionSetGroupId' },
|
|
5
|
+
permissionSetLicense: { sobject: 'PermissionSetLicenseAssign', idField: 'PermissionSetLicenseId' },
|
|
6
|
+
};
|
|
7
|
+
/** The sObject Collections API caps each create/delete call at 200 records. */
|
|
8
|
+
const collectionBatchSize = 200;
|
|
9
|
+
/** Escape a value for safe inclusion in a SOQL string literal. */
|
|
10
|
+
function escapeSoqlLiteral(value) {
|
|
11
|
+
return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
|
12
|
+
}
|
|
13
|
+
/** Build a comma-separated, quoted IN list from the values. */
|
|
14
|
+
function buildInList(values) {
|
|
15
|
+
return values.map((value) => `'${escapeSoqlLiteral(value)}'`).join(', ');
|
|
16
|
+
}
|
|
17
|
+
/** Full membership SOQL for the active, non-profile-owned assignments matching the filter. */
|
|
18
|
+
function buildMembershipQuery(usernames, wantsPermissionSet, wantsGroup) {
|
|
19
|
+
const clauses = [
|
|
20
|
+
'Assignee.IsActive = true',
|
|
21
|
+
'PermissionSet.IsOwnedByProfile = false',
|
|
22
|
+
];
|
|
23
|
+
if (usernames)
|
|
24
|
+
clauses.push(`Assignee.Username IN(${buildInList(usernames)})`);
|
|
25
|
+
if (!wantsGroup)
|
|
26
|
+
clauses.push('PermissionSetGroupId = null');
|
|
27
|
+
if (!wantsPermissionSet)
|
|
28
|
+
clauses.push('PermissionSetGroupId != null');
|
|
29
|
+
return `
|
|
30
|
+
SELECT
|
|
31
|
+
Id,
|
|
32
|
+
Assignee.Username,
|
|
33
|
+
PermissionSet.Name,
|
|
34
|
+
PermissionSetGroup.DeveloperName,
|
|
35
|
+
PermissionSetGroupId,
|
|
36
|
+
ExpirationDate
|
|
37
|
+
FROM PermissionSetAssignment
|
|
38
|
+
WHERE ${clauses.join(' AND ')}
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
/** Full membership SOQL for the current assignments of the given permission set and group ids. */
|
|
42
|
+
function buildCurrentMembershipQuery(permissionSetIds, groupIds) {
|
|
43
|
+
const clauses = [];
|
|
44
|
+
if (permissionSetIds.length > 0)
|
|
45
|
+
clauses.push(`PermissionSetId IN(${buildInList(permissionSetIds)})`);
|
|
46
|
+
if (groupIds.length > 0)
|
|
47
|
+
clauses.push(`PermissionSetGroupId IN(${buildInList(groupIds)})`);
|
|
48
|
+
return `
|
|
49
|
+
SELECT
|
|
50
|
+
Id,
|
|
51
|
+
Assignee.Username,
|
|
52
|
+
PermissionSet.Name,
|
|
53
|
+
PermissionSetGroup.DeveloperName,
|
|
54
|
+
PermissionSetGroupId,
|
|
55
|
+
ExpirationDate
|
|
56
|
+
FROM PermissionSetAssignment
|
|
57
|
+
WHERE ${clauses.join(' OR ')}
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
/** Full license SOQL for the active assignments matching the filter. */
|
|
61
|
+
function buildLicenseQuery(usernames) {
|
|
62
|
+
const clauses = ['Assignee.IsActive = true'];
|
|
63
|
+
if (usernames)
|
|
64
|
+
clauses.push(`Assignee.Username IN(${buildInList(usernames)})`);
|
|
65
|
+
return `
|
|
66
|
+
SELECT
|
|
67
|
+
Id,
|
|
68
|
+
Assignee.Username,
|
|
69
|
+
PermissionSetLicense.DeveloperName
|
|
70
|
+
FROM PermissionSetLicenseAssign
|
|
71
|
+
WHERE ${clauses.join(' AND ')}
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
/** Full license SOQL for the current assignments of the given license ids. */
|
|
75
|
+
function buildCurrentLicenseQuery(licenseIds) {
|
|
76
|
+
return `
|
|
77
|
+
SELECT
|
|
78
|
+
Id,
|
|
79
|
+
Assignee.Username,
|
|
80
|
+
PermissionSetLicense.DeveloperName
|
|
81
|
+
FROM PermissionSetLicenseAssign
|
|
82
|
+
WHERE PermissionSetLicenseId IN(${buildInList(licenseIds)})
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
/** Full SOQL for the users with the given usernames. */
|
|
86
|
+
function buildUserQuery(usernames) {
|
|
87
|
+
return `
|
|
88
|
+
SELECT
|
|
89
|
+
Id,
|
|
90
|
+
Username,
|
|
91
|
+
IsActive
|
|
92
|
+
FROM User
|
|
93
|
+
WHERE Username IN(${buildInList(usernames)})
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
/** Full SOQL for the permission sets with the given names. */
|
|
97
|
+
function buildPermissionSetQuery(names) {
|
|
98
|
+
return `
|
|
99
|
+
SELECT
|
|
100
|
+
Id,
|
|
101
|
+
Name
|
|
102
|
+
FROM PermissionSet
|
|
103
|
+
WHERE Name IN(${buildInList(names)})
|
|
104
|
+
`;
|
|
105
|
+
}
|
|
106
|
+
/** Full SOQL for the permission set groups with the given developer names. */
|
|
107
|
+
function buildPermissionSetGroupQuery(names) {
|
|
108
|
+
return `
|
|
109
|
+
SELECT
|
|
110
|
+
Id,
|
|
111
|
+
DeveloperName
|
|
112
|
+
FROM PermissionSetGroup
|
|
113
|
+
WHERE DeveloperName IN(${buildInList(names)})
|
|
114
|
+
`;
|
|
115
|
+
}
|
|
116
|
+
/** Full SOQL for the permission set licenses with the given developer names. */
|
|
117
|
+
function buildPermissionSetLicenseQuery(names) {
|
|
118
|
+
return `
|
|
119
|
+
SELECT
|
|
120
|
+
Id,
|
|
121
|
+
DeveloperName
|
|
122
|
+
FROM PermissionSetLicense
|
|
123
|
+
WHERE DeveloperName IN(${buildInList(names)})
|
|
124
|
+
`;
|
|
125
|
+
}
|
|
126
|
+
/** Split items into chunks of at most `size`. */
|
|
127
|
+
function chunk(items, size) {
|
|
128
|
+
const chunks = [];
|
|
129
|
+
for (let index = 0; index < items.length; index += size) {
|
|
130
|
+
chunks.push(items.slice(index, index + size));
|
|
131
|
+
}
|
|
132
|
+
return chunks;
|
|
133
|
+
}
|
|
134
|
+
/** Turn a per-record DML result into a domain outcome, capturing the error message on failure. */
|
|
135
|
+
function deriveOutcome(assignment, operation, result) {
|
|
136
|
+
const success = result?.success ?? false;
|
|
137
|
+
const message = result && !result.success ? result.errors.map((error) => error.message).join('; ') : undefined;
|
|
138
|
+
return {
|
|
139
|
+
assignee: assignment.assignee,
|
|
140
|
+
kind: assignment.kind,
|
|
141
|
+
target: assignment.target,
|
|
142
|
+
operation,
|
|
143
|
+
success,
|
|
144
|
+
message,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/** Group additions by sObject and chunk them for the Collections API, keeping each record's source. */
|
|
148
|
+
function buildAdditionBatches(additions) {
|
|
149
|
+
const bySobject = new Map();
|
|
150
|
+
for (const addition of additions) {
|
|
151
|
+
const { sobject } = assignmentObjects[addition.kind];
|
|
152
|
+
const grouped = bySobject.get(sobject) ?? [];
|
|
153
|
+
grouped.push(addition);
|
|
154
|
+
bySobject.set(sobject, grouped);
|
|
155
|
+
}
|
|
156
|
+
const batches = [];
|
|
157
|
+
for (const [sobject, grouped] of bySobject) {
|
|
158
|
+
for (const batch of chunk(grouped, collectionBatchSize)) {
|
|
159
|
+
const records = batch.map((addition) => ({
|
|
160
|
+
AssigneeId: addition.assigneeId,
|
|
161
|
+
[assignmentObjects[addition.kind].idField]: addition.targetId,
|
|
162
|
+
...(addition.expiration ? { ExpirationDate: addition.expiration } : {}),
|
|
163
|
+
}));
|
|
164
|
+
batches.push({ sobject, additions: batch, records });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return batches;
|
|
168
|
+
}
|
|
169
|
+
/** Group expiration updates by sObject and chunk them, building the Id + ExpirationDate records. */
|
|
170
|
+
function buildUpdateBatches(updates) {
|
|
171
|
+
const bySobject = new Map();
|
|
172
|
+
for (const update of updates) {
|
|
173
|
+
const { sobject } = assignmentObjects[update.kind];
|
|
174
|
+
const grouped = bySobject.get(sobject) ?? [];
|
|
175
|
+
grouped.push(update);
|
|
176
|
+
bySobject.set(sobject, grouped);
|
|
177
|
+
}
|
|
178
|
+
const batches = [];
|
|
179
|
+
for (const [sobject, grouped] of bySobject) {
|
|
180
|
+
for (const batch of chunk(grouped, collectionBatchSize)) {
|
|
181
|
+
const records = batch.map((update) => ({
|
|
182
|
+
Id: update.recordId,
|
|
183
|
+
ExpirationDate: update.expiration ?? null,
|
|
184
|
+
}));
|
|
185
|
+
batches.push({ sobject, updates: batch, records });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return batches;
|
|
189
|
+
}
|
|
190
|
+
/** Group removals by sObject and chunk them for the Collections API. */
|
|
191
|
+
function buildRemovalBatches(removals) {
|
|
192
|
+
const bySobject = new Map();
|
|
193
|
+
for (const removal of removals) {
|
|
194
|
+
const { sobject } = assignmentObjects[removal.kind];
|
|
195
|
+
const grouped = bySobject.get(sobject) ?? [];
|
|
196
|
+
grouped.push(removal);
|
|
197
|
+
bySobject.set(sobject, grouped);
|
|
198
|
+
}
|
|
199
|
+
const batches = [];
|
|
200
|
+
for (const [sobject, grouped] of bySobject) {
|
|
201
|
+
for (const batch of chunk(grouped, collectionBatchSize)) {
|
|
202
|
+
batches.push({ sobject, removals: batch });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return batches;
|
|
206
|
+
}
|
|
207
|
+
/** Classify a membership row: a group grant when it carries a group id, otherwise a plain permission set. */
|
|
208
|
+
function classifyMembership(record) {
|
|
209
|
+
if (record.PermissionSetGroupId && record.PermissionSetGroup) {
|
|
210
|
+
return { kind: 'permissionSetGroup', target: record.PermissionSetGroup.DeveloperName };
|
|
211
|
+
}
|
|
212
|
+
return { kind: 'permissionSet', target: record.PermissionSet.Name };
|
|
213
|
+
}
|
|
214
|
+
/** Adapter backing OrgClient with a Salesforce Connection. autoFetchQuery pages past 2000 rows. */
|
|
215
|
+
export class ConnectionOrgClient {
|
|
216
|
+
connection;
|
|
217
|
+
constructor(connection) {
|
|
218
|
+
this.connection = connection;
|
|
219
|
+
}
|
|
220
|
+
async findUsers(usernames) {
|
|
221
|
+
const records = await this.query(buildUserQuery(usernames));
|
|
222
|
+
return records.map((record) => ({ id: record.Id, username: record.Username, isActive: record.IsActive }));
|
|
223
|
+
}
|
|
224
|
+
async findPermissionSets(names) {
|
|
225
|
+
const records = await this.query(buildPermissionSetQuery(names));
|
|
226
|
+
return records.map((record) => ({ id: record.Id, name: record.Name }));
|
|
227
|
+
}
|
|
228
|
+
async findPermissionSetGroups(names) {
|
|
229
|
+
const records = await this.query(buildPermissionSetGroupQuery(names));
|
|
230
|
+
return records.map((record) => ({ id: record.Id, name: record.DeveloperName }));
|
|
231
|
+
}
|
|
232
|
+
async findPermissionSetLicenses(names) {
|
|
233
|
+
const records = await this.query(buildPermissionSetLicenseQuery(names));
|
|
234
|
+
return records.map((record) => ({ id: record.Id, name: record.DeveloperName }));
|
|
235
|
+
}
|
|
236
|
+
async listAssignments(filter) {
|
|
237
|
+
const kinds = filter?.kinds;
|
|
238
|
+
const wantsPermissionSet = !kinds || kinds.includes('permissionSet');
|
|
239
|
+
const wantsGroup = !kinds || kinds.includes('permissionSetGroup');
|
|
240
|
+
const wantsLicense = !kinds || kinds.includes('permissionSetLicense');
|
|
241
|
+
const tasks = [];
|
|
242
|
+
if (wantsPermissionSet || wantsGroup) {
|
|
243
|
+
tasks.push(this.listMemberships(filter?.usernames, wantsPermissionSet, wantsGroup));
|
|
244
|
+
}
|
|
245
|
+
if (wantsLicense) {
|
|
246
|
+
tasks.push(this.listLicenses(filter?.usernames));
|
|
247
|
+
}
|
|
248
|
+
const results = await Promise.all(tasks);
|
|
249
|
+
return results.flat();
|
|
250
|
+
}
|
|
251
|
+
async listMemberships(usernames, wantsPermissionSet, wantsGroup) {
|
|
252
|
+
const soql = buildMembershipQuery(usernames, wantsPermissionSet, wantsGroup);
|
|
253
|
+
const records = await this.query(soql);
|
|
254
|
+
return records.map((record) => {
|
|
255
|
+
const { kind, target } = classifyMembership(record);
|
|
256
|
+
return {
|
|
257
|
+
kind,
|
|
258
|
+
target,
|
|
259
|
+
assignee: record.Assignee.Username,
|
|
260
|
+
expiration: record.ExpirationDate,
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
async listLicenses(usernames) {
|
|
265
|
+
const soql = buildLicenseQuery(usernames);
|
|
266
|
+
const records = await this.query(soql);
|
|
267
|
+
return records.map((record) => ({
|
|
268
|
+
assignee: record.Assignee.Username,
|
|
269
|
+
kind: 'permissionSetLicense',
|
|
270
|
+
target: record.PermissionSetLicense.DeveloperName,
|
|
271
|
+
expiration: null,
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
async listCurrentAssignments(targets) {
|
|
275
|
+
const permissionSetIds = targets.filter((ref) => ref.kind === 'permissionSet').map((ref) => ref.id);
|
|
276
|
+
const groupIds = targets.filter((ref) => ref.kind === 'permissionSetGroup').map((ref) => ref.id);
|
|
277
|
+
const licenseIds = targets.filter((ref) => ref.kind === 'permissionSetLicense').map((ref) => ref.id);
|
|
278
|
+
const tasks = [];
|
|
279
|
+
if (permissionSetIds.length > 0 || groupIds.length > 0) {
|
|
280
|
+
const soql = buildCurrentMembershipQuery(permissionSetIds, groupIds);
|
|
281
|
+
tasks.push(this.listMembershipAssignments(soql));
|
|
282
|
+
}
|
|
283
|
+
if (licenseIds.length > 0) {
|
|
284
|
+
const soql = buildCurrentLicenseQuery(licenseIds);
|
|
285
|
+
tasks.push(this.listLicenseAssignments(soql));
|
|
286
|
+
}
|
|
287
|
+
const results = await Promise.all(tasks);
|
|
288
|
+
return results.flat();
|
|
289
|
+
}
|
|
290
|
+
async listMembershipAssignments(soql) {
|
|
291
|
+
const records = await this.query(soql);
|
|
292
|
+
return records.map((record) => {
|
|
293
|
+
const { kind, target } = classifyMembership(record);
|
|
294
|
+
return {
|
|
295
|
+
kind,
|
|
296
|
+
target,
|
|
297
|
+
recordId: record.Id,
|
|
298
|
+
assignee: record.Assignee.Username,
|
|
299
|
+
expiration: record.ExpirationDate,
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
async listLicenseAssignments(soql) {
|
|
304
|
+
const records = await this.query(soql);
|
|
305
|
+
return records.map((record) => ({
|
|
306
|
+
recordId: record.Id,
|
|
307
|
+
assignee: record.Assignee.Username,
|
|
308
|
+
kind: 'permissionSetLicense',
|
|
309
|
+
target: record.PermissionSetLicense.DeveloperName,
|
|
310
|
+
expiration: null,
|
|
311
|
+
}));
|
|
312
|
+
}
|
|
313
|
+
async addAssignments(additions) {
|
|
314
|
+
const batches = buildAdditionBatches(additions);
|
|
315
|
+
const settled = await Promise.all(batches.map(async (batch) => {
|
|
316
|
+
const results = await this.connection.create(batch.sobject, batch.records, { allOrNone: false });
|
|
317
|
+
return { batch, results };
|
|
318
|
+
}));
|
|
319
|
+
const outcomes = [];
|
|
320
|
+
for (const { batch, results } of settled) {
|
|
321
|
+
batch.additions.forEach((addition, index) => {
|
|
322
|
+
outcomes.push(deriveOutcome(addition, 'add', results[index]));
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
return outcomes;
|
|
326
|
+
}
|
|
327
|
+
async updateAssignments(updates) {
|
|
328
|
+
const batches = buildUpdateBatches(updates);
|
|
329
|
+
const settled = await Promise.all(batches.map(async (batch) => {
|
|
330
|
+
const results = await this.connection.update(batch.sobject, batch.records, { allOrNone: false });
|
|
331
|
+
return { batch, results };
|
|
332
|
+
}));
|
|
333
|
+
const outcomes = [];
|
|
334
|
+
for (const { batch, results } of settled) {
|
|
335
|
+
batch.updates.forEach((update, index) => {
|
|
336
|
+
outcomes.push(deriveOutcome(update, 'update', results[index]));
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
return outcomes;
|
|
340
|
+
}
|
|
341
|
+
async removeAssignments(removals) {
|
|
342
|
+
const batches = buildRemovalBatches(removals);
|
|
343
|
+
const settled = await Promise.all(batches.map(async (batch) => {
|
|
344
|
+
const recordIds = batch.removals.map((removal) => removal.recordId);
|
|
345
|
+
const results = await this.connection.destroy(batch.sobject, recordIds, { allOrNone: false });
|
|
346
|
+
return { batch, results };
|
|
347
|
+
}));
|
|
348
|
+
const outcomes = [];
|
|
349
|
+
for (const { batch, results } of settled) {
|
|
350
|
+
batch.removals.forEach((removal, index) => {
|
|
351
|
+
outcomes.push(deriveOutcome(removal, 'remove', results[index]));
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return outcomes;
|
|
355
|
+
}
|
|
356
|
+
async query(soql) {
|
|
357
|
+
const result = await this.connection.autoFetchQuery(soql);
|
|
358
|
+
return result.records;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=connection-org-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-org-client.js","sourceRoot":"","sources":["../../src/adapters/connection-org-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export type PsApplyResult = {
|
|
3
|
+
status: string;
|
|
4
|
+
toAdd: number;
|
|
5
|
+
toUpdate: number;
|
|
6
|
+
toRemove: number;
|
|
7
|
+
added: number;
|
|
8
|
+
updated: number;
|
|
9
|
+
removed: number;
|
|
10
|
+
failures: number;
|
|
11
|
+
};
|
|
12
|
+
export default class Apply extends SfCommand<PsApplyResult> {
|
|
13
|
+
static readonly summary: string;
|
|
14
|
+
static readonly description: string;
|
|
15
|
+
static readonly examples: string[];
|
|
16
|
+
static readonly flags: {
|
|
17
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
file: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
mode: import("@oclif/core/interfaces").OptionFlag<"additive" | "destructive" | "sync", import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
'max-deletes': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
|
+
'show-unchanged': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
+
'no-prompt': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
|
+
};
|
|
25
|
+
run(): Promise<PsApplyResult>;
|
|
26
|
+
/** Log findings, print the diff body, and report the outcome. Shared by both sources. */
|
|
27
|
+
private report;
|
|
28
|
+
/** Report the outcome of a completed (non-invalid) apply, setting the exit code as needed. */
|
|
29
|
+
private reportOutcome;
|
|
30
|
+
private reportDrift;
|
|
31
|
+
private logSummaryDryRun;
|
|
32
|
+
private logSummaryDeclined;
|
|
33
|
+
private logSummaryApplied;
|
|
34
|
+
private logFailureLine;
|
|
35
|
+
private logDriftNote;
|
|
36
|
+
private confirmDelete;
|
|
37
|
+
private errorInvalid;
|
|
38
|
+
private errorMaxDeletes;
|
|
39
|
+
private errorFailed;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/ps/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAS,MAAM,6BAA6B,CAAC;AAU/D,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS,CAAC,aAAa,CAAC;IACvD,gBAAuB,OAAO,SAAkC;IAChE,gBAAuB,WAAW,SAAsC;IACxE,gBAAuB,QAAQ,WAAoC;IAEnE,gBAAuB,KAAK;;;;;;;;MA2B1B;IAEW,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAoB1C,yFAAyF;IACzF,OAAO,CAAC,MAAM;IA2Cd,8FAA8F;IAC9F,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,WAAW;CAGtB"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { Messages } from '@salesforce/core';
|
|
3
|
+
import { ConnectionOrgClient } from '../../adapters/index.js';
|
|
4
|
+
import { ApplyService } from '../../services/index.js';
|
|
5
|
+
import { formatDiff, formatFindings } from '../../core/index.js';
|
|
6
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
7
|
+
const messages = Messages.loadMessages('sf-plugin-permission-sets', 'ps.apply');
|
|
8
|
+
export default class Apply extends SfCommand {
|
|
9
|
+
static summary = messages.getMessage('summary');
|
|
10
|
+
static description = messages.getMessage('description');
|
|
11
|
+
static examples = messages.getMessages('examples');
|
|
12
|
+
static flags = {
|
|
13
|
+
'target-org': Flags.requiredOrg(),
|
|
14
|
+
file: Flags.string({
|
|
15
|
+
char: 'f',
|
|
16
|
+
summary: messages.getMessage('flags.file.summary'),
|
|
17
|
+
required: true,
|
|
18
|
+
multiple: true,
|
|
19
|
+
}),
|
|
20
|
+
mode: Flags.option({
|
|
21
|
+
summary: messages.getMessage('flags.mode.summary'),
|
|
22
|
+
options: ['additive', 'destructive', 'sync'],
|
|
23
|
+
default: 'additive',
|
|
24
|
+
})(),
|
|
25
|
+
'max-deletes': Flags.integer({
|
|
26
|
+
summary: messages.getMessage('flags.max-deletes.summary'),
|
|
27
|
+
default: 50,
|
|
28
|
+
min: 0,
|
|
29
|
+
}),
|
|
30
|
+
'dry-run': Flags.boolean({
|
|
31
|
+
summary: messages.getMessage('flags.dry-run.summary'),
|
|
32
|
+
}),
|
|
33
|
+
'show-unchanged': Flags.boolean({
|
|
34
|
+
summary: messages.getMessage('flags.show-unchanged.summary'),
|
|
35
|
+
}),
|
|
36
|
+
'no-prompt': Flags.boolean({
|
|
37
|
+
summary: messages.getMessage('flags.no-prompt.summary'),
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { flags } = await this.parse(Apply);
|
|
42
|
+
const targetOrg = flags['target-org'];
|
|
43
|
+
const connection = targetOrg.getConnection();
|
|
44
|
+
const orgClient = new ConnectionOrgClient(connection);
|
|
45
|
+
const confirmDeletions = async (count) => {
|
|
46
|
+
if (flags['no-prompt'])
|
|
47
|
+
return true;
|
|
48
|
+
if (this.jsonEnabled())
|
|
49
|
+
throw messages.createError('error.promptInJson');
|
|
50
|
+
return this.confirmDelete(count);
|
|
51
|
+
};
|
|
52
|
+
const service = new ApplyService(orgClient, confirmDeletions);
|
|
53
|
+
const result = await service.run(flags.file, {
|
|
54
|
+
mode: flags.mode,
|
|
55
|
+
maxDeletes: flags['max-deletes'],
|
|
56
|
+
dryRun: flags['dry-run'],
|
|
57
|
+
});
|
|
58
|
+
return this.report(result, flags.mode, flags['max-deletes'], flags['show-unchanged']);
|
|
59
|
+
}
|
|
60
|
+
/** Log findings, print the diff body, and report the outcome. Shared by both sources. */
|
|
61
|
+
report(result, mode, maxDeletes, showUnchanged) {
|
|
62
|
+
for (const line of formatFindings(result.findings)) {
|
|
63
|
+
this.log(line);
|
|
64
|
+
}
|
|
65
|
+
const added = result.outcomes.filter((outcome) => outcome.operation === 'add' && outcome.success).length;
|
|
66
|
+
const updated = result.outcomes.filter((outcome) => outcome.operation === 'update' && outcome.success).length;
|
|
67
|
+
const removed = result.outcomes.filter((outcome) => outcome.operation === 'remove' && outcome.success).length;
|
|
68
|
+
const failures = result.outcomes.filter((outcome) => !outcome.success);
|
|
69
|
+
const summary = {
|
|
70
|
+
status: result.status,
|
|
71
|
+
toAdd: result.diff.toAdd.length,
|
|
72
|
+
toUpdate: result.diff.toUpdate.length,
|
|
73
|
+
toRemove: result.diff.toRemove.length,
|
|
74
|
+
added,
|
|
75
|
+
updated,
|
|
76
|
+
removed,
|
|
77
|
+
failures: failures.length,
|
|
78
|
+
};
|
|
79
|
+
if (result.status === 'invalid') {
|
|
80
|
+
process.exitCode = 1;
|
|
81
|
+
if (!this.jsonEnabled())
|
|
82
|
+
this.errorInvalid();
|
|
83
|
+
return summary;
|
|
84
|
+
}
|
|
85
|
+
this.log('');
|
|
86
|
+
for (const line of formatDiff(result.diff, { mode, showUnchanged })) {
|
|
87
|
+
this.log(line);
|
|
88
|
+
}
|
|
89
|
+
this.log('');
|
|
90
|
+
this.reportOutcome(result, summary, mode, maxDeletes);
|
|
91
|
+
return summary;
|
|
92
|
+
}
|
|
93
|
+
/** Report the outcome of a completed (non-invalid) apply, setting the exit code as needed. */
|
|
94
|
+
reportOutcome(result, summary, mode, maxDeletes) {
|
|
95
|
+
if (result.status === 'max-deletes-exceeded') {
|
|
96
|
+
process.exitCode = 1;
|
|
97
|
+
if (!this.jsonEnabled())
|
|
98
|
+
this.errorMaxDeletes(result.diff.toRemove.length, maxDeletes);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.reportDrift(result.drift, mode);
|
|
102
|
+
if (result.status === 'dry-run') {
|
|
103
|
+
// Report what this mode would actually do, matching the mode-scoped body: the full
|
|
104
|
+
// diff minus whatever the mode leaves as drift. Otherwise the counts contradict it.
|
|
105
|
+
this.logSummaryDryRun(summary.toAdd - result.drift.adds, summary.toUpdate - result.drift.updates, summary.toRemove - result.drift.removes);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (result.status === 'declined') {
|
|
109
|
+
this.logSummaryDeclined();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.logSummaryApplied(summary.added, summary.updated, summary.removed);
|
|
113
|
+
const failures = result.outcomes.filter((outcome) => !outcome.success);
|
|
114
|
+
for (const failure of failures) {
|
|
115
|
+
this.logFailureLine(failure.operation, failure.assignee, failure.target, failure.message ?? '');
|
|
116
|
+
}
|
|
117
|
+
if (result.failed) {
|
|
118
|
+
process.exitCode = 1;
|
|
119
|
+
if (!this.jsonEnabled())
|
|
120
|
+
this.errorFailed();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
reportDrift(drift, mode) {
|
|
124
|
+
if (drift.adds > 0)
|
|
125
|
+
this.logDriftNote(drift.adds, mode);
|
|
126
|
+
if (drift.updates > 0)
|
|
127
|
+
this.logDriftNote(drift.updates, mode);
|
|
128
|
+
if (drift.removes > 0)
|
|
129
|
+
this.logDriftNote(drift.removes, mode);
|
|
130
|
+
}
|
|
131
|
+
logSummaryDryRun(toAdd, toUpdate, toRemove) {
|
|
132
|
+
this.log(messages.getMessage('summary.dryRun', [
|
|
133
|
+
toAdd,
|
|
134
|
+
toUpdate,
|
|
135
|
+
toRemove,
|
|
136
|
+
]));
|
|
137
|
+
}
|
|
138
|
+
logSummaryDeclined() {
|
|
139
|
+
this.log(messages.getMessage('summary.declined'));
|
|
140
|
+
}
|
|
141
|
+
logSummaryApplied(added, updated, removed) {
|
|
142
|
+
this.log(messages.getMessage('summary.applied', [
|
|
143
|
+
added,
|
|
144
|
+
updated,
|
|
145
|
+
removed,
|
|
146
|
+
]));
|
|
147
|
+
}
|
|
148
|
+
logFailureLine(operation, assignee, target, message) {
|
|
149
|
+
this.log(messages.getMessage('failure.line', [
|
|
150
|
+
operation,
|
|
151
|
+
assignee,
|
|
152
|
+
target,
|
|
153
|
+
message,
|
|
154
|
+
]));
|
|
155
|
+
}
|
|
156
|
+
logDriftNote(count, mode) {
|
|
157
|
+
this.log(messages.getMessage('drift.note', [
|
|
158
|
+
count,
|
|
159
|
+
mode,
|
|
160
|
+
]));
|
|
161
|
+
}
|
|
162
|
+
confirmDelete(count) {
|
|
163
|
+
return this.confirm({ message: messages.getMessage('confirm.delete', [count]) });
|
|
164
|
+
}
|
|
165
|
+
errorInvalid() {
|
|
166
|
+
this.error(messages.getMessage('error.invalid'), { exit: 1 });
|
|
167
|
+
}
|
|
168
|
+
errorMaxDeletes(removeCount, maxDeletes) {
|
|
169
|
+
this.error(messages.getMessage('error.maxDeletes', [
|
|
170
|
+
removeCount,
|
|
171
|
+
maxDeletes,
|
|
172
|
+
]), { exit: 1 });
|
|
173
|
+
}
|
|
174
|
+
errorFailed() {
|
|
175
|
+
this.error(messages.getMessage('error.failed'), { exit: 1 });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/ps/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { Finding } from '../../core/index.js';
|
|
3
|
+
export type PsCheckResult = {
|
|
4
|
+
files: number;
|
|
5
|
+
users: number;
|
|
6
|
+
assignments: number;
|
|
7
|
+
findings: Finding[];
|
|
8
|
+
};
|
|
9
|
+
export default class Check extends SfCommand<PsCheckResult> {
|
|
10
|
+
static readonly summary: string;
|
|
11
|
+
static readonly description: string;
|
|
12
|
+
static readonly examples: string[];
|
|
13
|
+
static readonly flags: {
|
|
14
|
+
file: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
strict: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<PsCheckResult>;
|
|
18
|
+
private logSummaryCounts;
|
|
19
|
+
private errorFailed;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/ps/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAS,MAAM,6BAA6B,CAAC;AAI/D,OAAO,EAAkB,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAK9D,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS,CAAC,aAAa,CAAC;IACvD,gBAAuB,OAAO,SAAkC;IAChE,gBAAuB,WAAW,SAAsC;IACxE,gBAAuB,QAAQ,WAAoC;IAEnE,gBAAuB,KAAK;;;MAU1B;IAEW,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IA8B1C,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,WAAW;CAGtB"}
|