sf-plugin-permission-sets 0.0.0-dev.6 → 0.0.0-dev.60

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 (128) hide show
  1. package/LICENSE.md +28 -0
  2. package/README.md +243 -85
  3. package/lib/adapters/connection-org-client.d.ts +21 -0
  4. package/lib/adapters/connection-org-client.d.ts.map +1 -0
  5. package/lib/adapters/connection-org-client.js +265 -0
  6. package/lib/adapters/connection-org-client.js.map +1 -0
  7. package/lib/adapters/index.d.ts +2 -0
  8. package/lib/adapters/index.d.ts.map +1 -0
  9. package/lib/adapters/index.js +2 -0
  10. package/lib/adapters/index.js.map +1 -0
  11. package/lib/commands/ps/apply.d.ts +41 -0
  12. package/lib/commands/ps/apply.d.ts.map +1 -0
  13. package/lib/commands/ps/apply.js +178 -0
  14. package/lib/commands/ps/apply.js.map +1 -0
  15. package/lib/commands/ps/check.d.ts +21 -0
  16. package/lib/commands/ps/check.d.ts.map +1 -0
  17. package/lib/commands/ps/check.js +55 -0
  18. package/lib/commands/ps/check.js.map +1 -0
  19. package/lib/commands/ps/export.d.ts +26 -0
  20. package/lib/commands/ps/export.d.ts.map +1 -0
  21. package/lib/commands/ps/export.js +74 -0
  22. package/lib/commands/ps/export.js.map +1 -0
  23. package/lib/commands/ps/plan.d.ts +61 -0
  24. package/lib/commands/ps/plan.d.ts.map +1 -0
  25. package/lib/commands/ps/plan.js +212 -0
  26. package/lib/commands/ps/plan.js.map +1 -0
  27. package/lib/commands/ps/validate.d.ts +21 -0
  28. package/lib/commands/ps/validate.d.ts.map +1 -0
  29. package/lib/commands/ps/validate.js +56 -0
  30. package/lib/commands/ps/validate.js.map +1 -0
  31. package/lib/core/diff.d.ts +10 -0
  32. package/lib/core/diff.d.ts.map +1 -0
  33. package/lib/core/diff.js +54 -0
  34. package/lib/core/diff.js.map +1 -0
  35. package/lib/core/finding.d.ts +41 -0
  36. package/lib/core/finding.d.ts.map +1 -0
  37. package/lib/core/finding.js +76 -0
  38. package/lib/core/finding.js.map +1 -0
  39. package/lib/core/index.d.ts +10 -0
  40. package/lib/core/index.d.ts.map +1 -0
  41. package/lib/core/index.js +9 -0
  42. package/lib/core/index.js.map +1 -0
  43. package/lib/core/load.d.ts +4 -0
  44. package/lib/core/load.d.ts.map +1 -0
  45. package/lib/core/load.js +60 -0
  46. package/lib/core/load.js.map +1 -0
  47. package/lib/core/mode.d.ts +18 -0
  48. package/lib/core/mode.d.ts.map +1 -0
  49. package/lib/core/mode.js +16 -0
  50. package/lib/core/mode.js.map +1 -0
  51. package/lib/core/model.d.ts +78 -0
  52. package/lib/core/model.d.ts.map +1 -0
  53. package/lib/core/model.js +2 -0
  54. package/lib/core/model.js.map +1 -0
  55. package/lib/core/normalize.d.ts +17 -0
  56. package/lib/core/normalize.d.ts.map +1 -0
  57. package/lib/core/normalize.js +72 -0
  58. package/lib/core/normalize.js.map +1 -0
  59. package/lib/core/parse.d.ts +10 -0
  60. package/lib/core/parse.d.ts.map +1 -0
  61. package/lib/core/parse.js +20 -0
  62. package/lib/core/parse.js.map +1 -0
  63. package/lib/core/report.d.ts +15 -0
  64. package/lib/core/report.d.ts.map +1 -0
  65. package/lib/core/report.js +122 -0
  66. package/lib/core/report.js.map +1 -0
  67. package/lib/core/resolve.d.ts +20 -0
  68. package/lib/core/resolve.d.ts.map +1 -0
  69. package/lib/core/resolve.js +88 -0
  70. package/lib/core/resolve.js.map +1 -0
  71. package/lib/core/schema.d.ts +23 -0
  72. package/lib/core/schema.d.ts.map +1 -0
  73. package/lib/core/schema.js +35 -0
  74. package/lib/core/schema.js.map +1 -0
  75. package/lib/core/serialize.d.ts +9 -0
  76. package/lib/core/serialize.d.ts.map +1 -0
  77. package/lib/core/serialize.js +36 -0
  78. package/lib/core/serialize.js.map +1 -0
  79. package/lib/index.d.ts +1 -0
  80. package/lib/index.d.ts.map +1 -0
  81. package/lib/services/adapters/index.d.ts +2 -0
  82. package/lib/services/adapters/index.d.ts.map +1 -0
  83. package/lib/services/adapters/index.js +2 -0
  84. package/lib/services/adapters/index.js.map +1 -0
  85. package/lib/services/adapters/org-client.d.ts +22 -0
  86. package/lib/services/adapters/org-client.d.ts.map +1 -0
  87. package/lib/services/adapters/org-client.js +2 -0
  88. package/lib/services/adapters/org-client.js.map +1 -0
  89. package/lib/services/apply.d.ts +39 -0
  90. package/lib/services/apply.d.ts.map +1 -0
  91. package/lib/services/apply.js +85 -0
  92. package/lib/services/apply.js.map +1 -0
  93. package/lib/services/check.d.ts +14 -0
  94. package/lib/services/check.d.ts.map +1 -0
  95. package/lib/services/check.js +18 -0
  96. package/lib/services/check.js.map +1 -0
  97. package/lib/services/export.d.ts +19 -0
  98. package/lib/services/export.d.ts.map +1 -0
  99. package/lib/services/export.js +29 -0
  100. package/lib/services/export.js.map +1 -0
  101. package/lib/services/index.d.ts +6 -0
  102. package/lib/services/index.d.ts.map +1 -0
  103. package/lib/services/index.js +6 -0
  104. package/lib/services/index.js.map +1 -0
  105. package/lib/services/plan.d.ts +29 -0
  106. package/lib/services/plan.d.ts.map +1 -0
  107. package/lib/services/plan.js +51 -0
  108. package/lib/services/plan.js.map +1 -0
  109. package/lib/services/resolution.d.ts +17 -0
  110. package/lib/services/resolution.d.ts.map +1 -0
  111. package/lib/services/resolution.js +48 -0
  112. package/lib/services/resolution.js.map +1 -0
  113. package/lib/services/validate.d.ts +21 -0
  114. package/lib/services/validate.d.ts.map +1 -0
  115. package/lib/services/validate.js +50 -0
  116. package/lib/services/validate.js.map +1 -0
  117. package/messages/ps.apply.md +85 -0
  118. package/messages/ps.check.md +33 -0
  119. package/messages/ps.export.md +45 -0
  120. package/messages/ps.plan.md +85 -0
  121. package/messages/ps.validate.md +29 -0
  122. package/package.json +115 -180
  123. package/lib/commands/ps/info.d.ts +0 -11
  124. package/lib/commands/ps/info.js +0 -17
  125. package/lib/commands/ps/info.js.map +0 -1
  126. package/messages/ps.info.md +0 -17
  127. package/oclif.lock +0 -7781
  128. package/oclif.manifest.json +0 -51
@@ -0,0 +1,265 @@
1
+ /** SObject + naming field per kind. The Salesforce schema knowledge lives here, not in core. */
2
+ const targetObjects = {
3
+ permissionSet: { sobject: 'PermissionSet', field: 'Name' },
4
+ permissionSetGroup: { sobject: 'PermissionSetGroup', field: 'DeveloperName' },
5
+ permissionSetLicense: { sobject: 'PermissionSetLicense', field: 'DeveloperName' },
6
+ };
7
+ /** SObject + foreign-key field to set per kind when assigning. */
8
+ const assignmentObjects = {
9
+ permissionSet: { sobject: 'PermissionSetAssignment', idField: 'PermissionSetId' },
10
+ permissionSetGroup: { sobject: 'PermissionSetAssignment', idField: 'PermissionSetGroupId' },
11
+ permissionSetLicense: { sobject: 'PermissionSetLicenseAssign', idField: 'PermissionSetLicenseId' },
12
+ };
13
+ /** The sObject Collections API caps each create/delete call at 200 records. */
14
+ const collectionBatchSize = 200;
15
+ /** Escape a value for safe inclusion in a SOQL string literal. */
16
+ function soqlLiteral(value) {
17
+ return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
18
+ }
19
+ /** Build a comma-separated, quoted IN list from the values. */
20
+ function inList(values) {
21
+ return values.map((value) => `'${soqlLiteral(value)}'`).join(', ');
22
+ }
23
+ /** Split items into chunks of at most `size`. */
24
+ function chunk(items, size) {
25
+ const chunks = [];
26
+ for (let index = 0; index < items.length; index += size) {
27
+ chunks.push(items.slice(index, index + size));
28
+ }
29
+ return chunks;
30
+ }
31
+ /** Turn a per-record DML result into a domain outcome, capturing the error message on failure. */
32
+ function outcomeOf(assignment, operation, result) {
33
+ const success = result?.success ?? false;
34
+ const message = result && !result.success ? result.errors.map((error) => error.message).join('; ') : undefined;
35
+ return {
36
+ assignee: assignment.assignee,
37
+ kind: assignment.kind,
38
+ target: assignment.target,
39
+ operation,
40
+ success,
41
+ message,
42
+ };
43
+ }
44
+ /** Group additions by sObject and chunk them for the Collections API, keeping each record's source. */
45
+ function additionBatches(additions) {
46
+ const bySobject = new Map();
47
+ for (const addition of additions) {
48
+ const { sobject } = assignmentObjects[addition.kind];
49
+ const grouped = bySobject.get(sobject) ?? [];
50
+ grouped.push(addition);
51
+ bySobject.set(sobject, grouped);
52
+ }
53
+ const batches = [];
54
+ for (const [sobject, grouped] of bySobject) {
55
+ for (const batch of chunk(grouped, collectionBatchSize)) {
56
+ const records = batch.map((addition) => ({
57
+ AssigneeId: addition.assigneeId,
58
+ [assignmentObjects[addition.kind].idField]: addition.targetId,
59
+ ...(addition.expiration ? { ExpirationDate: addition.expiration } : {}),
60
+ }));
61
+ batches.push({ sobject, additions: batch, records });
62
+ }
63
+ }
64
+ return batches;
65
+ }
66
+ /** Group expiration updates by sObject and chunk them, building the Id + ExpirationDate records. */
67
+ function updateBatches(updates) {
68
+ const bySobject = new Map();
69
+ for (const update of updates) {
70
+ const { sobject } = assignmentObjects[update.kind];
71
+ const grouped = bySobject.get(sobject) ?? [];
72
+ grouped.push(update);
73
+ bySobject.set(sobject, grouped);
74
+ }
75
+ const batches = [];
76
+ for (const [sobject, grouped] of bySobject) {
77
+ for (const batch of chunk(grouped, collectionBatchSize)) {
78
+ const records = batch.map((update) => ({
79
+ Id: update.recordId,
80
+ ExpirationDate: update.expiration ?? null,
81
+ }));
82
+ batches.push({ sobject, updates: batch, records });
83
+ }
84
+ }
85
+ return batches;
86
+ }
87
+ /** Group removals by sObject and chunk them for the Collections API. */
88
+ function removalBatches(removals) {
89
+ const bySobject = new Map();
90
+ for (const removal of removals) {
91
+ const { sobject } = assignmentObjects[removal.kind];
92
+ const grouped = bySobject.get(sobject) ?? [];
93
+ grouped.push(removal);
94
+ bySobject.set(sobject, grouped);
95
+ }
96
+ const batches = [];
97
+ for (const [sobject, grouped] of bySobject) {
98
+ for (const batch of chunk(grouped, collectionBatchSize)) {
99
+ batches.push({ sobject, removals: batch });
100
+ }
101
+ }
102
+ return batches;
103
+ }
104
+ /** A membership row is a group grant when it carries a group id, otherwise a plain permission set. */
105
+ function membershipKindTarget(record) {
106
+ if (record.PermissionSetGroupId && record.PermissionSetGroup) {
107
+ return { kind: 'permissionSetGroup', target: record.PermissionSetGroup.DeveloperName };
108
+ }
109
+ return { kind: 'permissionSet', target: record.PermissionSet.Name };
110
+ }
111
+ /** Adapter backing OrgClient with a Salesforce Connection. autoFetchQuery pages past 2000 rows. */
112
+ export class ConnectionOrgClient {
113
+ connection;
114
+ constructor(connection) {
115
+ this.connection = connection;
116
+ }
117
+ async findUsers(usernames) {
118
+ const records = await this.query(`SELECT Id, Username, IsActive FROM User WHERE Username IN (${inList(usernames)})`);
119
+ return records.map((record) => ({ id: record.Id, username: record.Username, isActive: record.IsActive }));
120
+ }
121
+ async findTargets(kind, names) {
122
+ const { sobject, field } = targetObjects[kind];
123
+ const records = await this.query(`SELECT Id, ${field} FROM ${sobject} WHERE ${field} IN (${inList(names)})`);
124
+ return records.map((record) => ({ id: record.Id, name: record[field] }));
125
+ }
126
+ async listAssignments(filter) {
127
+ const kinds = filter?.kinds;
128
+ const wantsPermissionSet = !kinds || kinds.includes('permissionSet');
129
+ const wantsGroup = !kinds || kinds.includes('permissionSetGroup');
130
+ const wantsLicense = !kinds || kinds.includes('permissionSetLicense');
131
+ const tasks = [];
132
+ if (wantsPermissionSet || wantsGroup) {
133
+ tasks.push(this.listMemberships(filter?.usernames, wantsPermissionSet, wantsGroup));
134
+ }
135
+ if (wantsLicense) {
136
+ tasks.push(this.listLicenses(filter?.usernames));
137
+ }
138
+ const results = await Promise.all(tasks);
139
+ return results.flat();
140
+ }
141
+ async listMemberships(usernames, wantsPermissionSet, wantsGroup) {
142
+ const clauses = [
143
+ 'Assignee.IsActive = true',
144
+ 'PermissionSet.IsOwnedByProfile = false',
145
+ ];
146
+ if (usernames)
147
+ clauses.push(`Assignee.Username IN (${inList(usernames)})`);
148
+ if (!wantsGroup)
149
+ clauses.push('PermissionSetGroupId = null');
150
+ if (!wantsPermissionSet)
151
+ clauses.push('PermissionSetGroupId != null');
152
+ const soql = 'SELECT Id, Assignee.Username, PermissionSet.Name, PermissionSetGroup.DeveloperName, PermissionSetGroupId, ExpirationDate ' +
153
+ `FROM PermissionSetAssignment WHERE ${clauses.join(' AND ')}`;
154
+ const records = await this.query(soql);
155
+ return records.map((record) => ({
156
+ assignee: record.Assignee.Username,
157
+ ...membershipKindTarget(record),
158
+ expiration: record.ExpirationDate,
159
+ }));
160
+ }
161
+ async listLicenses(usernames) {
162
+ const clauses = ['Assignee.IsActive = true'];
163
+ if (usernames)
164
+ clauses.push(`Assignee.Username IN (${inList(usernames)})`);
165
+ const soql = 'SELECT Id, Assignee.Username, PermissionSetLicense.DeveloperName ' +
166
+ `FROM PermissionSetLicenseAssign WHERE ${clauses.join(' AND ')}`;
167
+ const records = await this.query(soql);
168
+ return records.map((record) => ({
169
+ assignee: record.Assignee.Username,
170
+ kind: 'permissionSetLicense',
171
+ target: record.PermissionSetLicense.DeveloperName,
172
+ expiration: null,
173
+ }));
174
+ }
175
+ async currentAssignments(targets) {
176
+ const permissionSetIds = targets.filter((ref) => ref.kind === 'permissionSet').map((ref) => ref.id);
177
+ const groupIds = targets.filter((ref) => ref.kind === 'permissionSetGroup').map((ref) => ref.id);
178
+ const licenseIds = targets.filter((ref) => ref.kind === 'permissionSetLicense').map((ref) => ref.id);
179
+ const tasks = [];
180
+ const memberClauses = [];
181
+ if (permissionSetIds.length > 0)
182
+ memberClauses.push(`PermissionSetId IN (${inList(permissionSetIds)})`);
183
+ if (groupIds.length > 0)
184
+ memberClauses.push(`PermissionSetGroupId IN (${inList(groupIds)})`);
185
+ if (memberClauses.length > 0) {
186
+ const soql = 'SELECT Id, Assignee.Username, PermissionSet.Name, PermissionSetGroup.DeveloperName, PermissionSetGroupId, ExpirationDate ' +
187
+ `FROM PermissionSetAssignment WHERE ${memberClauses.join(' OR ')}`;
188
+ tasks.push(this.membershipAssignments(soql));
189
+ }
190
+ if (licenseIds.length > 0) {
191
+ const soql = 'SELECT Id, Assignee.Username, PermissionSetLicense.DeveloperName ' +
192
+ `FROM PermissionSetLicenseAssign WHERE PermissionSetLicenseId IN (${inList(licenseIds)})`;
193
+ tasks.push(this.licenseAssignments(soql));
194
+ }
195
+ const results = await Promise.all(tasks);
196
+ return results.flat();
197
+ }
198
+ async membershipAssignments(soql) {
199
+ const records = await this.query(soql);
200
+ return records.map((record) => ({
201
+ recordId: record.Id,
202
+ assignee: record.Assignee.Username,
203
+ ...membershipKindTarget(record),
204
+ expiration: record.ExpirationDate,
205
+ }));
206
+ }
207
+ async licenseAssignments(soql) {
208
+ const records = await this.query(soql);
209
+ return records.map((record) => ({
210
+ recordId: record.Id,
211
+ assignee: record.Assignee.Username,
212
+ kind: 'permissionSetLicense',
213
+ target: record.PermissionSetLicense.DeveloperName,
214
+ expiration: null,
215
+ }));
216
+ }
217
+ async addAssignments(additions) {
218
+ const batches = additionBatches(additions);
219
+ const settled = await Promise.all(batches.map(async (batch) => {
220
+ const results = await this.connection.create(batch.sobject, batch.records, { allOrNone: false });
221
+ return { batch, results: results };
222
+ }));
223
+ const outcomes = [];
224
+ for (const { batch, results } of settled) {
225
+ batch.additions.forEach((addition, index) => {
226
+ outcomes.push(outcomeOf(addition, 'add', results[index]));
227
+ });
228
+ }
229
+ return outcomes;
230
+ }
231
+ async updateAssignments(updates) {
232
+ const batches = updateBatches(updates);
233
+ const settled = await Promise.all(batches.map(async (batch) => {
234
+ const results = await this.connection.update(batch.sobject, batch.records, { allOrNone: false });
235
+ return { batch, results: results };
236
+ }));
237
+ const outcomes = [];
238
+ for (const { batch, results } of settled) {
239
+ batch.updates.forEach((update, index) => {
240
+ outcomes.push(outcomeOf(update, 'update', results[index]));
241
+ });
242
+ }
243
+ return outcomes;
244
+ }
245
+ async removeAssignments(removals) {
246
+ const batches = removalBatches(removals);
247
+ const settled = await Promise.all(batches.map(async (batch) => {
248
+ const recordIds = batch.removals.map((removal) => removal.recordId);
249
+ const results = await this.connection.destroy(batch.sobject, recordIds, { allOrNone: false });
250
+ return { batch, results: results };
251
+ }));
252
+ const outcomes = [];
253
+ for (const { batch, results } of settled) {
254
+ batch.removals.forEach((removal, index) => {
255
+ outcomes.push(outcomeOf(removal, 'remove', results[index]));
256
+ });
257
+ }
258
+ return outcomes;
259
+ }
260
+ async query(soql) {
261
+ const result = await this.connection.autoFetchQuery(soql);
262
+ return result.records;
263
+ }
264
+ }
265
+ //# 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,2 @@
1
+ export { ConnectionOrgClient } from './connection-org-client.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { ConnectionOrgClient } from './connection-org-client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -0,0 +1,55 @@
1
+ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
2
+ import { Messages } from '@salesforce/core';
3
+ import { CheckService } from '../../services/index.js';
4
+ import { formatFindings } from '../../core/index.js';
5
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
6
+ const messages = Messages.loadMessages('sf-plugin-permission-sets', 'ps.check');
7
+ export default class Check extends SfCommand {
8
+ static summary = messages.getMessage('summary');
9
+ static description = messages.getMessage('description');
10
+ static examples = messages.getMessages('examples');
11
+ static flags = {
12
+ file: Flags.string({
13
+ char: 'f',
14
+ summary: messages.getMessage('flags.file.summary'),
15
+ required: true,
16
+ multiple: true,
17
+ }),
18
+ strict: Flags.boolean({
19
+ summary: messages.getMessage('flags.strict.summary'),
20
+ }),
21
+ };
22
+ async run() {
23
+ const { flags } = await this.parse(Check);
24
+ const service = new CheckService();
25
+ const result = await service.run(flags.file, flags.strict);
26
+ for (const line of formatFindings(result.findings)) {
27
+ this.log(line);
28
+ }
29
+ const assignees = new Set(result.assignments.map((assignment) => assignment.assignee));
30
+ this.log('');
31
+ this.logSummaryCounts(result.errors, result.warnings);
32
+ if (result.failed) {
33
+ process.exitCode = 1;
34
+ if (!this.jsonEnabled()) {
35
+ this.errorFailed();
36
+ }
37
+ }
38
+ return {
39
+ files: result.files.length,
40
+ users: assignees.size,
41
+ assignments: result.assignments.length,
42
+ findings: result.findings,
43
+ };
44
+ }
45
+ logSummaryCounts(errors, warnings) {
46
+ this.log(messages.getMessage('summary.counts', [
47
+ errors,
48
+ warnings,
49
+ ]));
50
+ }
51
+ errorFailed() {
52
+ this.error(messages.getMessage('error.failed'), { exit: 1 });
53
+ }
54
+ }
55
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/commands/ps/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAW,MAAM,qBAAqB,CAAC;AAE9D,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;AAShF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAwB;IAChD,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;SACvD,CAAC;KACL,CAAC;IAEK,KAAK,CAAC,GAAG;QACZ,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;QACL,CAAC;QAED,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC1B,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC5B,CAAC;IACN,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,QAAgB;QACrD,IAAI,CAAC,GAAG,CACJ,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE;YAClC,MAAM;YACN,QAAQ;SACX,CAAC,CACL,CAAC;IACN,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC"}