@simplysf/simply-permissions 1.2.7 → 1.2.8
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.
|
@@ -43,6 +43,10 @@ export type PermissionSetTemplateData = {
|
|
|
43
43
|
/**
|
|
44
44
|
* Render a complete PermissionSet metadata XML document from template data.
|
|
45
45
|
*
|
|
46
|
+
* Element text content is set via `.txt()`, which xmlbuilder2 escapes for us — there's no
|
|
47
|
+
* hand-rolled escaping (and no risk of it drifting out of sync with what's actually unsafe in
|
|
48
|
+
* XML text content).
|
|
49
|
+
*
|
|
46
50
|
* @param data - The permission set's label, description, and permission entries.
|
|
47
51
|
* @returns The rendered `<PermissionSet>` XML document, ready to write to a `.permissionset-meta.xml` file.
|
|
48
52
|
*/
|
|
@@ -13,75 +13,101 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
|
|
17
|
-
* @param value - The raw string to escape.
|
|
18
|
-
* @returns `value` with XML special characters (`& < > " '`) replaced by their entity references.
|
|
19
|
-
*/
|
|
20
|
-
function escapeXml(value) {
|
|
21
|
-
return value
|
|
22
|
-
.replace(/&/g, '&')
|
|
23
|
-
.replace(/</g, '<')
|
|
24
|
-
.replace(/>/g, '>')
|
|
25
|
-
.replace(/"/g, '"')
|
|
26
|
-
.replace(/'/g, ''');
|
|
27
|
-
}
|
|
16
|
+
import { create } from 'xmlbuilder2';
|
|
28
17
|
/**
|
|
29
18
|
* Render a complete PermissionSet metadata XML document from template data.
|
|
30
19
|
*
|
|
20
|
+
* Element text content is set via `.txt()`, which xmlbuilder2 escapes for us — there's no
|
|
21
|
+
* hand-rolled escaping (and no risk of it drifting out of sync with what's actually unsafe in
|
|
22
|
+
* XML text content).
|
|
23
|
+
*
|
|
31
24
|
* @param data - The permission set's label, description, and permission entries.
|
|
32
25
|
* @returns The rendered `<PermissionSet>` XML document, ready to write to a `.permissionset-meta.xml` file.
|
|
33
26
|
*/
|
|
34
27
|
export function buildPermissionSetXml(data) {
|
|
35
|
-
const
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
28
|
+
const root = create({ version: '1.0', encoding: 'UTF-8' }).ele('PermissionSet', {
|
|
29
|
+
xmlns: 'http://soap.sforce.com/2006/04/metadata',
|
|
30
|
+
});
|
|
31
|
+
root.ele('label').txt(data.label).up();
|
|
32
|
+
if (data.description) {
|
|
33
|
+
root.ele('description').txt(data.description).up();
|
|
34
|
+
}
|
|
35
|
+
for (const permission of data.objectPermissions) {
|
|
36
|
+
root
|
|
37
|
+
.ele('objectPermissions')
|
|
38
|
+
.ele('allowCreate')
|
|
39
|
+
.txt(String(permission.allowCreate))
|
|
40
|
+
.up()
|
|
41
|
+
.ele('allowDelete')
|
|
42
|
+
.txt(String(permission.allowDelete))
|
|
43
|
+
.up()
|
|
44
|
+
.ele('allowEdit')
|
|
45
|
+
.txt(String(permission.allowEdit))
|
|
46
|
+
.up()
|
|
47
|
+
.ele('allowRead')
|
|
48
|
+
.txt(String(permission.allowRead))
|
|
49
|
+
.up()
|
|
50
|
+
.ele('object')
|
|
51
|
+
.txt(permission.object)
|
|
52
|
+
.up()
|
|
53
|
+
.ele('modifyAllRecords')
|
|
54
|
+
.txt(String(permission.modifyAllRecords))
|
|
55
|
+
.up()
|
|
56
|
+
.ele('viewAllRecords')
|
|
57
|
+
.txt(String(permission.viewAllRecords))
|
|
58
|
+
.up()
|
|
59
|
+
.ele('viewAllFields')
|
|
60
|
+
.txt(String(permission.viewAllFields))
|
|
61
|
+
.up()
|
|
62
|
+
.up();
|
|
63
|
+
}
|
|
64
|
+
for (const permission of data.fieldPermissions) {
|
|
65
|
+
root
|
|
66
|
+
.ele('fieldPermissions')
|
|
67
|
+
.ele('field')
|
|
68
|
+
.txt(permission.field)
|
|
69
|
+
.up()
|
|
70
|
+
.ele('readable')
|
|
71
|
+
.txt(String(permission.readable))
|
|
72
|
+
.up()
|
|
73
|
+
.ele('editable')
|
|
74
|
+
.txt(String(permission.editable))
|
|
75
|
+
.up()
|
|
76
|
+
.up();
|
|
77
|
+
}
|
|
78
|
+
for (const setting of data.tabSettings) {
|
|
79
|
+
root
|
|
80
|
+
.ele('tabSettings')
|
|
81
|
+
.ele('tab')
|
|
82
|
+
.txt(setting.tab)
|
|
83
|
+
.up()
|
|
84
|
+
.ele('visibility')
|
|
85
|
+
.txt(setting.visible ? 'Visible' : 'Hidden')
|
|
86
|
+
.up()
|
|
87
|
+
.up();
|
|
88
|
+
}
|
|
89
|
+
for (const visibility of data.recordTypeVisibilities) {
|
|
90
|
+
root
|
|
91
|
+
.ele('recordTypeVisibilities')
|
|
92
|
+
.ele('recordType')
|
|
93
|
+
.txt(visibility.recordType)
|
|
94
|
+
.up()
|
|
95
|
+
.ele('visible')
|
|
96
|
+
.txt(String(visibility.visible))
|
|
97
|
+
.up()
|
|
98
|
+
.up();
|
|
99
|
+
}
|
|
100
|
+
for (const permission of data.userPermissions) {
|
|
101
|
+
root
|
|
102
|
+
.ele('userPermissions')
|
|
103
|
+
.ele('name')
|
|
104
|
+
.txt(permission.name)
|
|
105
|
+
.up()
|
|
106
|
+
.ele('enabled')
|
|
107
|
+
.txt(String(permission.enabled))
|
|
108
|
+
.up()
|
|
109
|
+
.up();
|
|
110
|
+
}
|
|
111
|
+
return root.end({ prettyPrint: true });
|
|
86
112
|
}
|
|
87
113
|
//# sourceMappingURL=permissionSetXmlTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionSetXmlTemplate.js","sourceRoot":"","sources":["../../src/common/permissionSetXmlTemplate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"permissionSetXmlTemplate.js","sourceRoot":"","sources":["../../src/common/permissionSetXmlTemplate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysf/simply-permissions",
|
|
3
3
|
"description": "Utilities for working with permissions",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.8",
|
|
5
5
|
"author": "@ClayChipps",
|
|
6
6
|
"homepage": "https://github.com/SimplySF/simply",
|
|
7
7
|
"bugs": "https://github.com/SimplySF/simply/issues",
|
|
@@ -61,7 +61,8 @@
|
|
|
61
61
|
"@salesforce/kit": "^3.2.6",
|
|
62
62
|
"@salesforce/sf-plugins-core": "^12.2.16",
|
|
63
63
|
"@salesforce/source-deploy-retrieve": "^12.37.2",
|
|
64
|
-
"@simplysf/simply-core": "^1.1.
|
|
64
|
+
"@simplysf/simply-core": "^1.1.4",
|
|
65
|
+
"xmlbuilder2": "^4.0.3",
|
|
65
66
|
"zod": "^4.1.12"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
@@ -208,5 +209,5 @@
|
|
|
208
209
|
"output": []
|
|
209
210
|
}
|
|
210
211
|
},
|
|
211
|
-
"gitHead": "
|
|
212
|
+
"gitHead": "6fadc80de8d12b2d91070cd8c35e60d727a3391d"
|
|
212
213
|
}
|