@j-schreiber/sf-cli-security-audit 0.19.3 → 0.20.1
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/README.md +3 -3
- package/lib/commands/org/audit/init.d.ts +1 -1
- package/lib/commands/org/audit/init.js +8 -8
- package/lib/commands/org/audit/init.js.map +1 -1
- package/lib/commands/org/audit/run.js +4 -1
- package/lib/commands/org/audit/run.js.map +1 -1
- package/lib/libs/audit-engine/auditRun.d.ts +7 -4
- package/lib/libs/audit-engine/auditRun.js +27 -9
- package/lib/libs/audit-engine/auditRun.js.map +1 -1
- package/lib/libs/audit-engine/file-manager/fileManager.d.ts +5 -6
- package/lib/libs/audit-engine/file-manager/fileManager.js +34 -15
- package/lib/libs/audit-engine/file-manager/fileManager.js.map +1 -1
- package/lib/libs/audit-engine/file-manager/fileManager.types.d.ts +1 -0
- package/lib/libs/audit-engine/index.d.ts +72 -43
- package/lib/libs/audit-engine/registry/context.types.d.ts +8 -2
- package/lib/libs/audit-engine/registry/definitions.d.ts +73 -44
- package/lib/libs/audit-engine/registry/policies/permissionSets.js +1 -1
- package/lib/libs/audit-engine/registry/policies/permissionSets.js.map +1 -1
- package/lib/libs/audit-engine/registry/policies/profiles.js +1 -1
- package/lib/libs/audit-engine/registry/policies/profiles.js.map +1 -1
- package/lib/libs/audit-engine/registry/policies/users.js +1 -1
- package/lib/libs/audit-engine/registry/policies/users.js.map +1 -1
- package/lib/libs/audit-engine/registry/policy.js +2 -2
- package/lib/libs/audit-engine/registry/policy.js.map +1 -1
- package/lib/libs/audit-engine/registry/roles/roleManager.d.ts +3 -19
- package/lib/libs/audit-engine/registry/roles/roleManager.js +17 -29
- package/lib/libs/audit-engine/registry/roles/roleManager.js.map +1 -1
- package/lib/libs/audit-engine/registry/roles/roleManager.types.d.ts +21 -3
- package/lib/libs/audit-engine/registry/roles/userRole.d.ts +7 -6
- package/lib/libs/audit-engine/registry/roles/userRole.js +78 -31
- package/lib/libs/audit-engine/registry/roles/userRole.js.map +1 -1
- package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js +5 -4
- package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js.map +1 -1
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js +3 -3
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js.map +1 -1
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js +4 -4
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js.map +1 -1
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.d.ts +71 -42
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.js +26 -30
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.js.map +1 -1
- package/lib/libs/audit-engine/registry/shape/schema.d.ts +77 -43
- package/lib/libs/audit-engine/registry/shape/schema.js +22 -20
- package/lib/libs/audit-engine/registry/shape/schema.js.map +1 -1
- package/lib/libs/audit-engine/registry/shape/shapeValidation.d.ts +3 -0
- package/lib/libs/audit-engine/registry/shape/shapeValidation.js +36 -7
- package/lib/libs/audit-engine/registry/shape/shapeValidation.js.map +1 -1
- package/lib/libs/conf-init/auditConfig.d.ts +1 -0
- package/lib/libs/conf-init/auditConfig.js +18 -10
- package/lib/libs/conf-init/auditConfig.js.map +1 -1
- package/lib/libs/conf-init/defaultClassifications.d.ts +5 -7
- package/lib/libs/conf-init/defaultClassifications.js +18 -28
- package/lib/libs/conf-init/defaultClassifications.js.map +1 -1
- package/lib/libs/conf-init/init.types.d.ts +7 -6
- package/lib/libs/conf-init/init.types.js.map +1 -1
- package/lib/libs/quick-scan/userPermissionScanner.js +12 -9
- package/lib/libs/quick-scan/userPermissionScanner.js.map +1 -1
- package/lib/salesforce/connection.d.ts +52 -0
- package/lib/salesforce/connection.js +130 -0
- package/lib/salesforce/connection.js.map +1 -0
- package/lib/salesforce/describes/orgDescribe.d.ts +13 -2
- package/lib/salesforce/describes/orgDescribe.js +16 -0
- package/lib/salesforce/describes/orgDescribe.js.map +1 -1
- package/lib/salesforce/index.d.ts +1 -0
- package/lib/salesforce/index.js +1 -0
- package/lib/salesforce/index.js.map +1 -1
- package/lib/salesforce/mdapi/genericSettingsMetadata.d.ts +2 -2
- package/lib/salesforce/mdapi/genericSettingsMetadata.js.map +1 -1
- package/lib/salesforce/mdapi/mdapi.d.ts +4 -4
- package/lib/salesforce/mdapi/mdapi.js +8 -8
- package/lib/salesforce/mdapi/mdapi.js.map +1 -1
- package/lib/salesforce/mdapi/metadataRegistryEntry.d.ts +3 -3
- package/lib/salesforce/mdapi/metadataRegistryEntry.js +1 -9
- package/lib/salesforce/mdapi/metadataRegistryEntry.js.map +1 -1
- package/lib/salesforce/mdapi/namedMetadataToolingQueryable.d.ts +2 -2
- package/lib/salesforce/mdapi/namedMetadataToolingQueryable.js +1 -1
- package/lib/salesforce/mdapi/namedMetadataToolingQueryable.js.map +1 -1
- package/lib/salesforce/mdapi/namedMetadataType.d.ts +2 -2
- package/lib/salesforce/mdapi/namedMetadataType.js.map +1 -1
- package/lib/salesforce/mdapi/singletonMetadataType.d.ts +2 -2
- package/lib/salesforce/mdapi/singletonMetadataType.js.map +1 -1
- package/lib/salesforce/repositories/connected-apps/connected-apps.d.ts +2 -2
- package/lib/salesforce/repositories/connected-apps/connected-apps.js.map +1 -1
- package/lib/salesforce/repositories/connected-apps/oauth-tokens.d.ts +2 -2
- package/lib/salesforce/repositories/connected-apps/oauth-tokens.js +3 -7
- package/lib/salesforce/repositories/connected-apps/oauth-tokens.js.map +1 -1
- package/lib/salesforce/repositories/perm-sets/permission-sets.d.ts +2 -2
- package/lib/salesforce/repositories/perm-sets/permission-sets.js.map +1 -1
- package/lib/salesforce/repositories/profiles/profiles.d.ts +2 -2
- package/lib/salesforce/repositories/profiles/profiles.js.map +1 -1
- package/lib/salesforce/repositories/users/users.d.ts +3 -3
- package/lib/salesforce/repositories/users/users.js +6 -6
- package/lib/salesforce/repositories/users/users.js.map +1 -1
- package/messages/auditShapeValidation.md +4 -0
- package/messages/org.audit.run.md +4 -0
- package/messages/rules.enforceClassificationPresets.md +4 -8
- package/messages/salesforceConnectionErrors.md +11 -0
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
- package/lib/libs/audit-engine/registry/helpers/permissionsScanning.d.ts +0 -37
- package/lib/libs/audit-engine/registry/helpers/permissionsScanning.js +0 -81
- package/lib/libs/audit-engine/registry/helpers/permissionsScanning.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { RuleRegistry, PolicyDefinitions
|
|
2
|
-
import {
|
|
1
|
+
import { RuleRegistry, PolicyDefinitions } from '../audit-engine/index.js';
|
|
2
|
+
import { SfConnection } from '../../salesforce/index.js';
|
|
3
|
+
import { InventoryInitialisers, ShapeInitialisers } from './defaultClassifications.js';
|
|
3
4
|
import { DefaultPolicyDefinitions } from './defaultPolicies.js';
|
|
4
5
|
/**
|
|
5
6
|
* Exposes key functionality to load an audit config as static methods. This makes
|
|
@@ -13,20 +14,27 @@ export default class AuditConfig {
|
|
|
13
14
|
* @param con
|
|
14
15
|
*/
|
|
15
16
|
static async init(targetCon, opts) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (defaultClassification) {
|
|
21
|
-
conf.classifications[className] = defaultClassification;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
17
|
+
const sfCon = await SfConnection.create(targetCon);
|
|
18
|
+
const conf = { shape: {}, inventory: {}, policies: {}, acceptedRisks: {}, controls: {} };
|
|
19
|
+
conf.shape = await this.initSubtype(ShapeInitialisers, sfCon, opts);
|
|
20
|
+
conf.inventory = await this.initSubtype(InventoryInitialisers, sfCon, opts);
|
|
24
21
|
for (const policyName of Object.keys(PolicyDefinitions)) {
|
|
25
22
|
const policy = initPolicyConfig(policyName);
|
|
26
23
|
conf.policies[policyName] = policy;
|
|
27
24
|
}
|
|
28
25
|
return conf;
|
|
29
26
|
}
|
|
27
|
+
// PRIVATE ZONE
|
|
28
|
+
static async initSubtype(initialisable, targetCon, opts) {
|
|
29
|
+
const initPromises = Object.entries(initialisable).map(([, init]) => init(targetCon, opts?.preset));
|
|
30
|
+
const inits = await Promise.all(initPromises);
|
|
31
|
+
const result = {};
|
|
32
|
+
const keys = Object.keys(initialisable);
|
|
33
|
+
for (const initEntry of keys) {
|
|
34
|
+
result[initEntry] = inits.at(keys.indexOf(initEntry));
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
30
38
|
}
|
|
31
39
|
export function initPolicyConfig(policyName) {
|
|
32
40
|
const def = PolicyDefinitions[policyName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditConfig.js","sourceRoot":"","sources":["../../../src/libs/conf-init/auditConfig.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"auditConfig.js","sourceRoot":"","sources":["../../../src/libs/conf-init/auditConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,YAAY,EAA0B,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAe,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAYhE;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE,IAAuB;QACrE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,IAAI,GAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzG,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5E,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAsB,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,UAAsB,CAAC,GAAG,MAAa,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;IAEP,MAAM,CAAC,KAAK,CAAC,WAAW,CAC9B,aAA0C,EAC1C,SAAuB,EACvB,IAAuB;QAEvB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAqB,UAAa;IAChE,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC3D,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;YACzB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,wBAAwB,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SfConnection } from '../../salesforce/index.js';
|
|
2
|
+
import { Inventories, Shapes } from '../audit-engine/registry/definitions.js';
|
|
3
3
|
import { AuditInitPresets } from './init.types.js';
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare const ClassificationInitDefinitions: Record<Classifications, ClassificationDefinition>;
|
|
8
|
-
export {};
|
|
4
|
+
export type Initialiser = (con: SfConnection, preset?: AuditInitPresets) => Promise<unknown>;
|
|
5
|
+
export declare const ShapeInitialisers: Record<Shapes, Initialiser>;
|
|
6
|
+
export declare const InventoryInitialisers: Record<Inventories, Initialiser>;
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import { PermissionRiskLevel, UserPrivilegeLevel } from '../audit-engine/index.js';
|
|
2
2
|
import { OrgDescribe, PermissionSets, Profiles, Users } from '../../salesforce/index.js';
|
|
3
3
|
import { loadPreset } from './presets.js';
|
|
4
|
-
export const
|
|
5
|
-
userPermissions:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
initialiser: initProfiles,
|
|
13
|
-
},
|
|
14
|
-
permissionSets: {
|
|
15
|
-
initialiser: initPermissionSets,
|
|
16
|
-
},
|
|
17
|
-
users: {
|
|
18
|
-
initialiser: initUsers,
|
|
19
|
-
},
|
|
4
|
+
export const ShapeInitialisers = {
|
|
5
|
+
userPermissions: initUserPermissions,
|
|
6
|
+
customPermissions: initCustomPermissions,
|
|
7
|
+
};
|
|
8
|
+
export const InventoryInitialisers = {
|
|
9
|
+
profiles: initProfiles,
|
|
10
|
+
permissionSets: initPermissionSets,
|
|
11
|
+
users: initUsers,
|
|
20
12
|
};
|
|
21
13
|
async function initUserPermissions(con, preset) {
|
|
22
14
|
const orgManager = await OrgDescribe.create(con);
|
|
@@ -24,8 +16,8 @@ async function initUserPermissions(con, preset) {
|
|
|
24
16
|
const presConfig = loadPreset(preset);
|
|
25
17
|
const perms = presConfig.classifyUserPermissions(userPerms);
|
|
26
18
|
perms.sort(classificationSorter);
|
|
27
|
-
const result = {
|
|
28
|
-
perms.forEach((perm) => (result
|
|
19
|
+
const result = {};
|
|
20
|
+
perms.forEach((perm) => (result[perm.name] = {
|
|
29
21
|
label: perm.label,
|
|
30
22
|
classification: perm.classification,
|
|
31
23
|
reason: perm.reason,
|
|
@@ -33,7 +25,7 @@ async function initUserPermissions(con, preset) {
|
|
|
33
25
|
return result;
|
|
34
26
|
}
|
|
35
27
|
async function initCustomPermissions(con) {
|
|
36
|
-
const result = {
|
|
28
|
+
const result = {};
|
|
37
29
|
const orgManager = await OrgDescribe.create(con);
|
|
38
30
|
const customPerms = orgManager.getCustomPermissions();
|
|
39
31
|
if (customPerms.length === 0) {
|
|
@@ -43,7 +35,7 @@ async function initCustomPermissions(con) {
|
|
|
43
35
|
...cp,
|
|
44
36
|
classification: PermissionRiskLevel.UNKNOWN,
|
|
45
37
|
}));
|
|
46
|
-
perms.forEach((perm) => (result
|
|
38
|
+
perms.forEach((perm) => (result[perm.name] = {
|
|
47
39
|
label: perm.label,
|
|
48
40
|
classification: perm.classification,
|
|
49
41
|
}));
|
|
@@ -52,29 +44,27 @@ async function initCustomPermissions(con) {
|
|
|
52
44
|
async function initProfiles(targetOrgCon) {
|
|
53
45
|
const profilesRepo = new Profiles(targetOrgCon);
|
|
54
46
|
const profiles = await profilesRepo.resolve();
|
|
55
|
-
const content = {
|
|
47
|
+
const content = {};
|
|
56
48
|
for (const profileName of profiles.keys()) {
|
|
57
|
-
content
|
|
49
|
+
content[profileName] = { role: UserPrivilegeLevel.UNKNOWN };
|
|
58
50
|
}
|
|
59
51
|
return content;
|
|
60
52
|
}
|
|
61
53
|
async function initPermissionSets(targetOrgCon) {
|
|
62
54
|
const permsetsRepo = new PermissionSets(targetOrgCon);
|
|
63
55
|
const permsets = await permsetsRepo.resolve({ isCustomOnly: true });
|
|
64
|
-
const content = {
|
|
56
|
+
const content = {};
|
|
65
57
|
for (const permsetName of permsets.keys()) {
|
|
66
|
-
content
|
|
58
|
+
content[permsetName] = { role: UserPrivilegeLevel.UNKNOWN };
|
|
67
59
|
}
|
|
68
60
|
return content;
|
|
69
61
|
}
|
|
70
62
|
async function initUsers(targetOrgCon) {
|
|
71
63
|
const usersRepo = new Users(targetOrgCon);
|
|
72
64
|
const users = await usersRepo.resolve();
|
|
73
|
-
const content = {
|
|
74
|
-
users: {},
|
|
75
|
-
};
|
|
65
|
+
const content = {};
|
|
76
66
|
for (const username of users.keys())
|
|
77
|
-
content
|
|
67
|
+
content[username] = { role: UserPrivilegeLevel.STANDARD_USER };
|
|
78
68
|
return content;
|
|
79
69
|
}
|
|
80
70
|
function resolveRiskLevelOrdinalValue(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultClassifications.js","sourceRoot":"","sources":["../../../src/libs/conf-init/defaultClassifications.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaultClassifications.js","sourceRoot":"","sources":["../../../src/libs/conf-init/defaultClassifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
2
|
import { AuditConfigShape } from '../audit-engine/index.js';
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
export type
|
|
3
|
+
type Shapes = (typeof AuditConfigShape)['shape']['files'];
|
|
4
|
+
type Inventories = (typeof AuditConfigShape)['inventory']['files'];
|
|
5
|
+
export type PermissionClassifications = z.infer<Shapes['userPermissions']['schema']>;
|
|
6
|
+
export type NamedPermissionClassification = PermissionClassifications['string'] & {
|
|
6
7
|
name: string;
|
|
7
8
|
};
|
|
8
9
|
export type UnclassifiedPerm = Omit<NamedPermissionClassification, 'classification'>;
|
|
9
|
-
export type ProfileClassifications = z.infer<
|
|
10
|
-
export type PermsetClassifications = z.infer<
|
|
11
|
-
export type UserClassifications = z.infer<
|
|
10
|
+
export type ProfileClassifications = z.infer<Inventories['profiles']['schema']>;
|
|
11
|
+
export type PermsetClassifications = z.infer<Inventories['permissionSets']['schema']>;
|
|
12
|
+
export type UserClassifications = z.infer<Inventories['users']['schema']>;
|
|
12
13
|
export declare enum AuditInitPresets {
|
|
13
14
|
strict = "strict",
|
|
14
15
|
loose = "loose",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.types.js","sourceRoot":"","sources":["../../../src/libs/conf-init/init.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.types.js","sourceRoot":"","sources":["../../../src/libs/conf-init/init.types.ts"],"names":[],"mappings":"AAaA,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,iCAAa,CAAA;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
-
import { OrgDescribe, PermissionSets, Profiles, Users } from '../../salesforce/index.js';
|
|
2
|
+
import { OrgDescribe, PermissionSets, Profiles, SfConnection, Users } from '../../salesforce/index.js';
|
|
3
3
|
export default class UserPermissionScanner extends EventEmitter {
|
|
4
4
|
status = {
|
|
5
5
|
profiles: {},
|
|
@@ -10,10 +10,12 @@ export default class UserPermissionScanner extends EventEmitter {
|
|
|
10
10
|
constructor() {
|
|
11
11
|
super();
|
|
12
12
|
}
|
|
13
|
+
// PUBLIC APIS
|
|
13
14
|
async quickScan(opts) {
|
|
14
15
|
this.emitProgress({ status: 'Pending' });
|
|
15
|
-
const
|
|
16
|
-
const
|
|
16
|
+
const sfCon = await SfConnection.create(opts.targetOrg);
|
|
17
|
+
const normalizedPerms = await this.normalizePermissions(opts, sfCon);
|
|
18
|
+
const scannedEntities = await this.resolveEntities(opts, sfCon);
|
|
17
19
|
const scanResult = {
|
|
18
20
|
permissions: {},
|
|
19
21
|
scannedProfiles: Object.keys(scannedEntities.profiles),
|
|
@@ -34,9 +36,10 @@ export default class UserPermissionScanner extends EventEmitter {
|
|
|
34
36
|
this.emitProgress({ status: 'Completed' });
|
|
35
37
|
return scanResult;
|
|
36
38
|
}
|
|
37
|
-
|
|
39
|
+
// PRIVATE ZONE
|
|
40
|
+
async normalizePermissions(opts, sfCon) {
|
|
38
41
|
const sanitizedPerms = [];
|
|
39
|
-
const org = await OrgDescribe.create(
|
|
42
|
+
const org = await OrgDescribe.create(sfCon);
|
|
40
43
|
for (const permName of opts.permissions) {
|
|
41
44
|
if (org.isValid(permName)) {
|
|
42
45
|
sanitizedPerms.push(permName);
|
|
@@ -58,13 +61,13 @@ export default class UserPermissionScanner extends EventEmitter {
|
|
|
58
61
|
}
|
|
59
62
|
return sanitizedPerms;
|
|
60
63
|
}
|
|
61
|
-
async resolveEntities(opts) {
|
|
64
|
+
async resolveEntities(opts, sfCon) {
|
|
62
65
|
const promises = [];
|
|
63
66
|
this.emitProgress({ status: 'In Progress' });
|
|
64
|
-
promises.push(this.resolveProfiles(
|
|
65
|
-
promises.push(this.resolvePermissionSets(
|
|
67
|
+
promises.push(this.resolveProfiles(sfCon));
|
|
68
|
+
promises.push(this.resolvePermissionSets(sfCon));
|
|
66
69
|
if (opts.deepScan) {
|
|
67
|
-
const usersRepo = new Users(
|
|
70
|
+
const usersRepo = new Users(sfCon);
|
|
68
71
|
promises.push(usersRepo.resolve({
|
|
69
72
|
withLoginHistory: false,
|
|
70
73
|
withPermissions: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userPermissionScanner.js","sourceRoot":"","sources":["../../../src/libs/quick-scan/userPermissionScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"userPermissionScanner.js","sourceRoot":"","sources":["../../../src/libs/quick-scan/userPermissionScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DescribeSObjectResult, QueryOptions, QueryResult, Record as JsForceRecord } from '@jsforce/jsforce-node';
|
|
2
|
+
import { Connection, Logger } from '@salesforce/core';
|
|
3
|
+
import { ComponentSet, RetrieveResult } from '@salesforce/source-deploy-retrieve';
|
|
4
|
+
/**
|
|
5
|
+
* Wrapper around the default `Connection` from core to add
|
|
6
|
+
* meaningful logging and error bubbling for better UX and debugging.
|
|
7
|
+
*/
|
|
8
|
+
export default class SfConnection {
|
|
9
|
+
readonly coreConnection: Connection;
|
|
10
|
+
private logger?;
|
|
11
|
+
constructor(coreConnection: Connection, logger?: Logger | undefined);
|
|
12
|
+
/**
|
|
13
|
+
* Create new instance with default logger
|
|
14
|
+
*
|
|
15
|
+
* @param con
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
static create(con: Connection): Promise<SfConnection>;
|
|
19
|
+
/**
|
|
20
|
+
* Executes a query against standard query API or tooling API
|
|
21
|
+
*
|
|
22
|
+
* @param soql
|
|
23
|
+
* @param isTooling
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
query<T extends JsForceRecord>(soql: string, isTooling?: boolean, queryOptions?: Partial<QueryOptions>): Promise<QueryResult<T>>;
|
|
27
|
+
/**
|
|
28
|
+
* Describes an SObject and returns the describe result
|
|
29
|
+
*
|
|
30
|
+
* @param sobjectName
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
describe(sobjectName: string): Promise<DescribeSObjectResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Retrieves a component set as metadata and polls until the retrieve
|
|
36
|
+
* result is ready.
|
|
37
|
+
*
|
|
38
|
+
* @param components
|
|
39
|
+
* @param packageName
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
retrieve(components: ComponentSet, packageName: string): Promise<RetrieveResult>;
|
|
43
|
+
private getLogger;
|
|
44
|
+
}
|
|
45
|
+
type ConnectionError = {
|
|
46
|
+
errorCode: string;
|
|
47
|
+
data: {
|
|
48
|
+
message: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare function isConnectionError(error: unknown): error is ConnectionError;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Logger, Messages } from '@salesforce/core';
|
|
2
|
+
import { RETRIEVE_CACHE } from './mdapi/constants.js';
|
|
3
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
4
|
+
const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'salesforceConnectionErrors');
|
|
5
|
+
/**
|
|
6
|
+
* Wrapper around the default `Connection` from core to add
|
|
7
|
+
* meaningful logging and error bubbling for better UX and debugging.
|
|
8
|
+
*/
|
|
9
|
+
export default class SfConnection {
|
|
10
|
+
coreConnection;
|
|
11
|
+
logger;
|
|
12
|
+
constructor(coreConnection, logger) {
|
|
13
|
+
this.coreConnection = coreConnection;
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create new instance with default logger
|
|
18
|
+
*
|
|
19
|
+
* @param con
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
static async create(con) {
|
|
23
|
+
const logger = await Logger.child('jsc:sae');
|
|
24
|
+
return new SfConnection(con, logger);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Executes a query against standard query API or tooling API
|
|
28
|
+
*
|
|
29
|
+
* @param soql
|
|
30
|
+
* @param isTooling
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
async query(soql, isTooling = false, queryOptions) {
|
|
34
|
+
const logger = await this.getLogger();
|
|
35
|
+
logger.debug(`Executing query ${isTooling ? '(Tooling)' : ''}: ${soql}`);
|
|
36
|
+
const definitiveOpts = queryOptions ?? {
|
|
37
|
+
autoFetch: true,
|
|
38
|
+
};
|
|
39
|
+
try {
|
|
40
|
+
const result = isTooling
|
|
41
|
+
? await this.coreConnection.tooling.query(soql, definitiveOpts)
|
|
42
|
+
: await this.coreConnection.query(soql, definitiveOpts);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
logger.error(`Failed to execute query: ${soql}`);
|
|
47
|
+
logger.error(error);
|
|
48
|
+
// downstream logic in other modules depends on specific error codes
|
|
49
|
+
// that cannot be passed to SfError. Therefore, the error is re-thrown
|
|
50
|
+
if (isConnectionError(error) && error.errorCode === 'EXCEEDED_ID_LIMIT') {
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
const errMsg = isConnectionError(error) ? error.data.message : 'Unknown error';
|
|
54
|
+
throw messages.createError('Query', [soql, errMsg], undefined, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Describes an SObject and returns the describe result
|
|
59
|
+
*
|
|
60
|
+
* @param sobjectName
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
async describe(sobjectName) {
|
|
64
|
+
const logger = await this.getLogger();
|
|
65
|
+
logger.debug('Describing: ' + sobjectName);
|
|
66
|
+
try {
|
|
67
|
+
const result = await this.coreConnection.describe(sobjectName);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
logger.error(`Failed to describe: ${sobjectName}`);
|
|
72
|
+
logger.error(error);
|
|
73
|
+
const details = isConnectionError(error) ? `${error.errorCode}: ${error.data.message}` : 'Unknown error';
|
|
74
|
+
throw messages.createError('DescribeSObjectFail', [sobjectName, details]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Retrieves a component set as metadata and polls until the retrieve
|
|
79
|
+
* result is ready.
|
|
80
|
+
*
|
|
81
|
+
* @param components
|
|
82
|
+
* @param packageName
|
|
83
|
+
* @returns
|
|
84
|
+
*/
|
|
85
|
+
async retrieve(components, packageName) {
|
|
86
|
+
const logger = await this.getLogger();
|
|
87
|
+
logger.debug('Starting metadata retrieve: ' + formatComponentSet(components));
|
|
88
|
+
try {
|
|
89
|
+
const retrieveRequest = await components.retrieve({
|
|
90
|
+
usernameOrConnection: this.coreConnection,
|
|
91
|
+
format: 'metadata',
|
|
92
|
+
unzip: true,
|
|
93
|
+
singlePackage: true,
|
|
94
|
+
zipFileName: `${packageName}.zip`,
|
|
95
|
+
output: RETRIEVE_CACHE,
|
|
96
|
+
});
|
|
97
|
+
const mdapiRetrieveResult = await retrieveRequest.pollStatus();
|
|
98
|
+
logger.debug('Retrieve successful');
|
|
99
|
+
return mdapiRetrieveResult;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error('Failed to retrieve metadata');
|
|
103
|
+
logger.error(error);
|
|
104
|
+
const details = isConnectionError(error) ? error.data.message : 'Unknown error';
|
|
105
|
+
throw messages.createError('MetadataRetrieve', [details]);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async getLogger() {
|
|
109
|
+
if (!this.logger) {
|
|
110
|
+
this.logger = await Logger.child('jsc:sae');
|
|
111
|
+
}
|
|
112
|
+
return this.logger;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export function isConnectionError(error) {
|
|
116
|
+
return typeof error === 'object' && error != null && 'errorCode' in error && 'data' in error;
|
|
117
|
+
}
|
|
118
|
+
function formatComponentSet(cmpSet) {
|
|
119
|
+
const types = {};
|
|
120
|
+
for (const cmp of cmpSet.toArray()) {
|
|
121
|
+
if (!types[cmp.type.name]) {
|
|
122
|
+
types[cmp.type.name] = [];
|
|
123
|
+
}
|
|
124
|
+
types[cmp.type.name].push(cmp.fullName);
|
|
125
|
+
}
|
|
126
|
+
return Object.entries(types)
|
|
127
|
+
.map(([typeName, cmps]) => `[${typeName}: ${cmps.join(',')}]`)
|
|
128
|
+
.join('; ');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/salesforce/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import SfConnection from '../connection.js';
|
|
2
2
|
import { Permission } from './orgDescribe.types.js';
|
|
3
3
|
export default class OrgDescribe {
|
|
4
|
+
/**
|
|
5
|
+
* Caches initialised OrgDescribes by username.
|
|
6
|
+
*/
|
|
7
|
+
static orgCache: Map<string, OrgDescribe>;
|
|
4
8
|
private customPermissions;
|
|
5
9
|
private userPermissions;
|
|
6
10
|
private constructor();
|
|
7
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Initialises a new OrgDescribe instance from an existing connection
|
|
13
|
+
* and caches it for repeated access.
|
|
14
|
+
*
|
|
15
|
+
* @param con
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
static create(con: SfConnection): Promise<OrgDescribe>;
|
|
8
19
|
/**
|
|
9
20
|
* Tries to find a user permission based on unsanitized input. Searches
|
|
10
21
|
* by exact match (fastest) or tries fuzzy matching by name and label.
|
|
@@ -3,13 +3,29 @@ import { CUSTOM_PERMS_QUERY } from './orgDescribe.types.js';
|
|
|
3
3
|
/** Minimum length for perm label to start fuzzy matching */
|
|
4
4
|
const FUZZY_MATCH_MIN_LENGTH = 15;
|
|
5
5
|
export default class OrgDescribe {
|
|
6
|
+
/**
|
|
7
|
+
* Caches initialised OrgDescribes by username.
|
|
8
|
+
*/
|
|
9
|
+
static orgCache = new Map();
|
|
6
10
|
customPermissions;
|
|
7
11
|
userPermissions;
|
|
8
12
|
constructor() { }
|
|
13
|
+
/**
|
|
14
|
+
* Initialises a new OrgDescribe instance from an existing connection
|
|
15
|
+
* and caches it for repeated access.
|
|
16
|
+
*
|
|
17
|
+
* @param con
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
9
20
|
static async create(con) {
|
|
21
|
+
const maybeCache = this.orgCache.get(con.coreConnection.instanceUrl);
|
|
22
|
+
if (maybeCache) {
|
|
23
|
+
return maybeCache;
|
|
24
|
+
}
|
|
10
25
|
const inst = new OrgDescribe();
|
|
11
26
|
inst.userPermissions = await fetchUserPermissions(con);
|
|
12
27
|
inst.customPermissions = await fetchCustomPermissions(con);
|
|
28
|
+
this.orgCache.set(con.coreConnection.instanceUrl, inst);
|
|
13
29
|
return inst;
|
|
14
30
|
}
|
|
15
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgDescribe.js","sourceRoot":"","sources":["../../../src/salesforce/describes/orgDescribe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orgDescribe.js","sourceRoot":"","sources":["../../../src/salesforce/describes/orgDescribe.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,3 +11,4 @@ export { ResolveLifecycle } from './resolve-entity-lifecycle-bus.js';
|
|
|
11
11
|
export type { MessageEvent } from './resolve-entity-lifecycle-bus.js';
|
|
12
12
|
export { default as MDAPI } from './mdapi/mdapi.js';
|
|
13
13
|
export type { MdapiRegistry } from './mdapi/metadataRegistry.js';
|
|
14
|
+
export { default as SfConnection } from './connection.js';
|
package/lib/salesforce/index.js
CHANGED
|
@@ -8,4 +8,5 @@ export { default as OrgDescribe } from './describes/orgDescribe.js';
|
|
|
8
8
|
export { ResolveLifecycle } from './resolve-entity-lifecycle-bus.js';
|
|
9
9
|
// MDAPI
|
|
10
10
|
export { default as MDAPI } from './mdapi/mdapi.js';
|
|
11
|
+
export { default as SfConnection } from './connection.js';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/salesforce/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQpE,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/salesforce/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQpE,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import SfConnection from '../connection.js';
|
|
2
2
|
export type SalesforceSetting = {
|
|
3
3
|
[settingsKey: string]: unknown;
|
|
4
4
|
};
|
|
@@ -18,7 +18,7 @@ export default class GenericSettingsMetadata {
|
|
|
18
18
|
* @param settingNames
|
|
19
19
|
* @returns
|
|
20
20
|
*/
|
|
21
|
-
resolve(con:
|
|
21
|
+
resolve(con: SfConnection, settingNames: string[]): Promise<Record<string, SalesforceSetting>>;
|
|
22
22
|
private parseSettingsContent;
|
|
23
23
|
private extractContent;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genericSettingsMetadata.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/genericSettingsMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"genericSettingsMetadata.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/genericSettingsMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAA2B,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAQ/E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAClC,YAAY,CAAC;IACJ,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAE1C;QACE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,YAAsB;QAC5D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAAC,IAAmB,EAAE,YAAsB;QACtE,MAAM,MAAM,GAAsC,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,UAAU,CAAC,CAAC;YAClG,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,OAAe,EAAE,YAAoB;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC5E,OAAO,aAAa,CAAC,YAAY,CAA4B,CAAC;IAChE,CAAC;CACF"}
|