@j-schreiber/sf-cli-security-audit 0.11.0 → 0.11.2
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 +5 -3
- package/lib/commands/org/audit/init.js +14 -20
- package/lib/commands/org/audit/init.js.map +1 -1
- package/lib/commands/org/audit/run.d.ts +1 -1
- package/lib/commands/org/audit/run.js +5 -3
- package/lib/commands/org/audit/run.js.map +1 -1
- package/lib/commands/org/scan/user-perms.js +1 -1
- package/lib/commands/org/scan/user-perms.js.map +1 -1
- package/lib/libs/{core → audit-engine}/auditRun.d.ts +6 -7
- package/lib/libs/{core → audit-engine}/auditRun.js +20 -16
- package/lib/libs/audit-engine/auditRun.js.map +1 -0
- package/lib/libs/audit-engine/file-manager/fileManager.d.ts +31 -0
- package/lib/libs/audit-engine/file-manager/fileManager.js +139 -0
- package/lib/libs/audit-engine/file-manager/fileManager.js.map +1 -0
- package/lib/libs/audit-engine/file-manager/fileManager.types.d.ts +30 -0
- package/lib/libs/audit-engine/file-manager/fileManager.types.js +2 -0
- package/lib/libs/audit-engine/file-manager/fileManager.types.js.map +1 -0
- package/lib/libs/audit-engine/index.d.ts +121 -0
- package/lib/libs/audit-engine/index.js +9 -0
- package/lib/libs/audit-engine/index.js.map +1 -0
- package/lib/libs/{core/registries/types.d.ts → audit-engine/registry/context.types.d.ts} +6 -10
- package/lib/libs/audit-engine/registry/context.types.js +2 -0
- package/lib/libs/audit-engine/registry/context.types.js.map +1 -0
- package/lib/libs/audit-engine/registry/definitions.d.ts +23 -0
- package/lib/libs/audit-engine/registry/definitions.js +53 -0
- package/lib/libs/audit-engine/registry/definitions.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/helpers/permissionsScanning.d.ts +12 -2
- package/lib/libs/{core/registries → audit-engine/registry}/helpers/permissionsScanning.js +15 -3
- package/lib/libs/audit-engine/registry/helpers/permissionsScanning.js.map +1 -0
- package/lib/libs/audit-engine/registry/policies/connectedApps.d.ts +12 -0
- package/lib/libs/audit-engine/registry/policies/connectedApps.js +22 -0
- package/lib/libs/audit-engine/registry/policies/connectedApps.js.map +1 -0
- package/lib/libs/audit-engine/registry/policies/permissionSets.d.ts +18 -0
- package/lib/libs/audit-engine/registry/policies/permissionSets.js +80 -0
- package/lib/libs/audit-engine/registry/policies/permissionSets.js.map +1 -0
- package/lib/libs/audit-engine/registry/policies/profiles.d.ts +18 -0
- package/lib/libs/audit-engine/registry/policies/profiles.js +76 -0
- package/lib/libs/audit-engine/registry/policies/profiles.js.map +1 -0
- package/lib/libs/audit-engine/registry/policies/settings.d.ts +18 -0
- package/lib/libs/{core/policies/settingsPolicy.js → audit-engine/registry/policies/settings.js} +48 -18
- package/lib/libs/audit-engine/registry/policies/settings.js.map +1 -0
- package/lib/libs/audit-engine/registry/policies/users.d.ts +19 -0
- package/lib/libs/audit-engine/registry/policies/users.js +76 -0
- package/lib/libs/audit-engine/registry/policies/users.js.map +1 -0
- package/lib/libs/{core/policies → audit-engine/registry}/policy.d.ts +7 -6
- package/lib/libs/{core/policies → audit-engine/registry}/policy.js +2 -0
- package/lib/libs/audit-engine/registry/policy.js.map +1 -0
- package/lib/libs/{core/result-types.d.ts → audit-engine/registry/result.types.d.ts} +2 -2
- package/lib/libs/audit-engine/registry/result.types.js +2 -0
- package/lib/libs/audit-engine/registry/result.types.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/ruleRegistry.d.ts +10 -7
- package/lib/libs/{core/registries → audit-engine/registry}/ruleRegistry.js +7 -7
- package/lib/libs/audit-engine/registry/ruleRegistry.js.map +1 -0
- package/lib/libs/audit-engine/registry/rules/allUsedAppsUnderManagement.d.ts +7 -0
- package/lib/libs/audit-engine/registry/rules/allUsedAppsUnderManagement.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionPresets.d.ts +4 -2
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionPresets.js +17 -15
- package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnProfileLike.d.ts +1 -1
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnProfileLike.js +3 -3
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnUser.d.ts +2 -2
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js +38 -0
- package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/enforceSettings.d.ts +2 -2
- package/lib/libs/audit-engine/registry/rules/enforceSettings.js.map +1 -0
- package/lib/libs/audit-engine/registry/rules/noInactiveUsers.d.ts +14 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/noInactiveUsers.js +17 -4
- package/lib/libs/audit-engine/registry/rules/noInactiveUsers.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/noOtherApexApiLogins.d.ts +2 -2
- package/lib/libs/{core/registries → audit-engine/registry}/rules/noOtherApexApiLogins.js +4 -1
- package/lib/libs/audit-engine/registry/rules/noOtherApexApiLogins.js.map +1 -0
- package/lib/libs/audit-engine/registry/rules/noUserCanSelfAuthorize.d.ts +7 -0
- package/lib/libs/audit-engine/registry/rules/noUserCanSelfAuthorize.js.map +1 -0
- package/lib/libs/{core/registries → audit-engine/registry}/rules/policyRule.d.ts +4 -6
- package/lib/libs/{core/registries → audit-engine/registry}/rules/policyRule.js +2 -12
- package/lib/libs/audit-engine/registry/rules/policyRule.js.map +1 -0
- package/lib/libs/audit-engine/registry/schema.d.ts +2 -0
- package/lib/libs/audit-engine/registry/schema.js +11 -0
- package/lib/libs/audit-engine/registry/schema.js.map +1 -0
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.d.ts +122 -0
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.js +54 -0
- package/lib/libs/audit-engine/registry/shape/auditConfigShape.js.map +1 -0
- package/lib/libs/audit-engine/registry/shape/schema.d.ts +96 -0
- package/lib/libs/audit-engine/registry/shape/schema.js +84 -0
- package/lib/libs/audit-engine/registry/shape/schema.js.map +1 -0
- package/lib/libs/conf-init/auditConfig.d.ts +3 -12
- package/lib/libs/conf-init/auditConfig.js +25 -25
- package/lib/libs/conf-init/auditConfig.js.map +1 -1
- package/lib/libs/conf-init/defaultClassifications.d.ts +8 -0
- package/lib/libs/conf-init/defaultClassifications.js +116 -0
- package/lib/libs/conf-init/defaultClassifications.js.map +1 -0
- package/lib/libs/conf-init/defaultPolicies.d.ts +2 -0
- package/lib/libs/conf-init/defaultPolicies.js +20 -0
- package/lib/libs/conf-init/defaultPolicies.js.map +1 -0
- package/lib/libs/conf-init/init.types.d.ts +27 -0
- package/lib/libs/conf-init/init.types.js +8 -0
- package/lib/libs/conf-init/init.types.js.map +1 -0
- package/lib/libs/conf-init/presets/loose.d.ts +1 -1
- package/lib/libs/conf-init/presets/loose.js +4 -2
- package/lib/libs/conf-init/presets/loose.js.map +1 -1
- package/lib/libs/conf-init/presets/none.d.ts +2 -7
- package/lib/libs/conf-init/presets/none.js +1 -1
- package/lib/libs/conf-init/presets/none.js.map +1 -1
- package/lib/libs/conf-init/presets/strict.js +3 -1
- package/lib/libs/conf-init/presets/strict.js.map +1 -1
- package/lib/libs/conf-init/presets.d.ts +1 -6
- package/lib/libs/conf-init/presets.js +1 -6
- package/lib/libs/conf-init/presets.js.map +1 -1
- package/lib/libs/quick-scan/userPermissionScanner.js +17 -13
- package/lib/libs/quick-scan/userPermissionScanner.js.map +1 -1
- package/lib/salesforce/index.d.ts +10 -0
- package/lib/salesforce/index.js +8 -0
- package/lib/salesforce/index.js.map +1 -0
- package/lib/salesforce/mdapi/constants.d.ts +1 -0
- package/lib/salesforce/mdapi/constants.js +3 -0
- package/lib/salesforce/mdapi/constants.js.map +1 -0
- package/lib/{libs/core/mdapi/anySettingsMetadata.d.ts → salesforce/mdapi/genericSettingsMetadata.d.ts} +3 -4
- package/lib/{libs/core/mdapi/anySettingsMetadata.js → salesforce/mdapi/genericSettingsMetadata.js} +8 -10
- package/lib/salesforce/mdapi/genericSettingsMetadata.js.map +1 -0
- package/lib/salesforce/mdapi/mdapi.d.ts +46 -0
- package/lib/{libs/core/mdapi/mdapiRetriever.js → salesforce/mdapi/mdapi.js} +19 -40
- package/lib/salesforce/mdapi/mdapi.js.map +1 -0
- package/lib/salesforce/mdapi/metadataRegistry.d.ts +26 -0
- package/lib/salesforce/mdapi/metadataRegistry.js +43 -0
- package/lib/salesforce/mdapi/metadataRegistry.js.map +1 -0
- package/lib/{libs/core → salesforce}/mdapi/metadataRegistryEntry.js +1 -1
- package/lib/salesforce/mdapi/metadataRegistryEntry.js.map +1 -0
- package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.js +1 -1
- package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.js.map +1 -1
- package/lib/salesforce/mdapi/namedMetadataType.js.map +1 -0
- package/lib/salesforce/mdapi/singletonMetadataType.js.map +1 -0
- package/lib/salesforce/repositories/connected-apps/connected-app.types.d.ts +28 -0
- package/lib/salesforce/repositories/connected-apps/connected-app.types.js +6 -0
- package/lib/salesforce/repositories/connected-apps/connected-app.types.js.map +1 -0
- package/lib/salesforce/repositories/connected-apps/connected-apps.d.ts +16 -0
- package/lib/salesforce/repositories/connected-apps/connected-apps.js +83 -0
- package/lib/salesforce/repositories/connected-apps/connected-apps.js.map +1 -0
- package/lib/salesforce/repositories/connected-apps/queries.d.ts +2 -0
- package/lib/salesforce/repositories/connected-apps/queries.js +3 -0
- package/lib/salesforce/repositories/connected-apps/queries.js.map +1 -0
- package/lib/salesforce/repositories/perm-sets/perm-sets.types.d.ts +29 -0
- package/lib/salesforce/repositories/perm-sets/perm-sets.types.js +10 -0
- package/lib/salesforce/repositories/perm-sets/perm-sets.types.js.map +1 -0
- package/lib/salesforce/repositories/perm-sets/permission-sets.d.ts +11 -0
- package/lib/salesforce/repositories/perm-sets/permission-sets.js +43 -0
- package/lib/salesforce/repositories/perm-sets/permission-sets.js.map +1 -0
- package/lib/salesforce/repositories/perm-sets/queries.d.ts +1 -0
- package/lib/salesforce/repositories/perm-sets/queries.js +2 -0
- package/lib/salesforce/repositories/perm-sets/queries.js.map +1 -0
- package/lib/salesforce/repositories/profiles/profile.types.d.ts +29 -0
- package/lib/salesforce/repositories/profiles/profile.types.js +8 -0
- package/lib/salesforce/repositories/profiles/profile.types.js.map +1 -0
- package/lib/salesforce/repositories/profiles/profiles.d.ts +14 -0
- package/lib/salesforce/repositories/profiles/profiles.js +38 -0
- package/lib/salesforce/repositories/profiles/profiles.js.map +1 -0
- package/lib/salesforce/repositories/profiles/queries.d.ts +2 -0
- package/lib/salesforce/repositories/profiles/queries.js +7 -0
- package/lib/salesforce/repositories/profiles/queries.js.map +1 -0
- package/lib/salesforce/repositories/users/queries.d.ts +3 -0
- package/lib/{libs/core/constants.js → salesforce/repositories/users/queries.js} +1 -11
- package/lib/salesforce/repositories/users/queries.js.map +1 -0
- package/lib/salesforce/repositories/users/user.types.d.ts +54 -0
- package/lib/salesforce/repositories/users/user.types.js +12 -0
- package/lib/salesforce/repositories/users/user.types.js.map +1 -0
- package/lib/salesforce/repositories/users/users.d.ts +22 -0
- package/lib/salesforce/repositories/users/users.js +134 -0
- package/lib/salesforce/repositories/users/users.js.map +1 -0
- package/lib/{libs/core/utils.d.ts → utils.d.ts} +2 -0
- package/lib/{libs/core/utils.js → utils.js} +26 -0
- package/lib/utils.js.map +1 -0
- package/lib/ux/auditRunMultiStage.d.ts +1 -1
- package/lib/ux/auditRunMultiStage.js +5 -5
- package/lib/ux/auditRunMultiStage.js.map +1 -1
- package/messages/policies.general.md +9 -1
- package/messages/policyclassifications.md +8 -0
- package/messages/rules.enforceClassificationPresets.md +2 -2
- package/messages/rules.users.md +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
- package/lib/libs/conf-init/permissionsClassification.d.ts +0 -37
- package/lib/libs/conf-init/permissionsClassification.js +0 -126
- package/lib/libs/conf-init/permissionsClassification.js.map +0 -1
- package/lib/libs/conf-init/policyConfigs.d.ts +0 -21
- package/lib/libs/conf-init/policyConfigs.js +0 -47
- package/lib/libs/conf-init/policyConfigs.js.map +0 -1
- package/lib/libs/core/auditRun.js.map +0 -1
- package/lib/libs/core/classification-types.d.ts +0 -20
- package/lib/libs/core/classification-types.js +0 -23
- package/lib/libs/core/classification-types.js.map +0 -1
- package/lib/libs/core/constants.d.ts +0 -10
- package/lib/libs/core/constants.js.map +0 -1
- package/lib/libs/core/file-mgmt/auditConfigFileManager.d.ts +0 -48
- package/lib/libs/core/file-mgmt/auditConfigFileManager.js +0 -145
- package/lib/libs/core/file-mgmt/auditConfigFileManager.js.map +0 -1
- package/lib/libs/core/file-mgmt/schema.d.ts +0 -156
- package/lib/libs/core/file-mgmt/schema.js +0 -81
- package/lib/libs/core/file-mgmt/schema.js.map +0 -1
- package/lib/libs/core/mdapi/anySettingsMetadata.js.map +0 -1
- package/lib/libs/core/mdapi/mdapiRetriever.d.ts +0 -54
- package/lib/libs/core/mdapi/mdapiRetriever.js.map +0 -1
- package/lib/libs/core/mdapi/metadataRegistryEntry.js.map +0 -1
- package/lib/libs/core/mdapi/namedMetadataType.js.map +0 -1
- package/lib/libs/core/mdapi/singletonMetadataType.js.map +0 -1
- package/lib/libs/core/mdapi/usersRepository.d.ts +0 -85
- package/lib/libs/core/mdapi/usersRepository.js +0 -126
- package/lib/libs/core/mdapi/usersRepository.js.map +0 -1
- package/lib/libs/core/policies/connectedAppPolicy.d.ts +0 -10
- package/lib/libs/core/policies/connectedAppPolicy.js +0 -78
- package/lib/libs/core/policies/connectedAppPolicy.js.map +0 -1
- package/lib/libs/core/policies/permissionSetPolicy.d.ts +0 -12
- package/lib/libs/core/policies/permissionSetPolicy.js +0 -64
- package/lib/libs/core/policies/permissionSetPolicy.js.map +0 -1
- package/lib/libs/core/policies/policy.js.map +0 -1
- package/lib/libs/core/policies/profilePolicy.d.ts +0 -12
- package/lib/libs/core/policies/profilePolicy.js +0 -65
- package/lib/libs/core/policies/profilePolicy.js.map +0 -1
- package/lib/libs/core/policies/salesforceStandardTypes.d.ts +0 -58
- package/lib/libs/core/policies/salesforceStandardTypes.js +0 -2
- package/lib/libs/core/policies/salesforceStandardTypes.js.map +0 -1
- package/lib/libs/core/policies/settingsPolicy.d.ts +0 -11
- package/lib/libs/core/policies/settingsPolicy.js.map +0 -1
- package/lib/libs/core/policies/userPolicy.d.ts +0 -12
- package/lib/libs/core/policies/userPolicy.js +0 -62
- package/lib/libs/core/policies/userPolicy.js.map +0 -1
- package/lib/libs/core/policy-types.d.ts +0 -18
- package/lib/libs/core/policy-types.js +0 -28
- package/lib/libs/core/policy-types.js.map +0 -1
- package/lib/libs/core/policyRegistry.d.ts +0 -23
- package/lib/libs/core/policyRegistry.js +0 -52
- package/lib/libs/core/policyRegistry.js.map +0 -1
- package/lib/libs/core/registries/connectedApps.d.ts +0 -13
- package/lib/libs/core/registries/connectedApps.js +0 -13
- package/lib/libs/core/registries/connectedApps.js.map +0 -1
- package/lib/libs/core/registries/helpers/permissionsScanning.js.map +0 -1
- package/lib/libs/core/registries/permissionSets.d.ts +0 -11
- package/lib/libs/core/registries/permissionSets.js +0 -11
- package/lib/libs/core/registries/permissionSets.js.map +0 -1
- package/lib/libs/core/registries/profiles.d.ts +0 -11
- package/lib/libs/core/registries/profiles.js +0 -11
- package/lib/libs/core/registries/profiles.js.map +0 -1
- package/lib/libs/core/registries/ruleRegistry.js.map +0 -1
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.d.ts +0 -7
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.js.map +0 -1
- package/lib/libs/core/registries/rules/enforcePermissionPresets.js.map +0 -1
- package/lib/libs/core/registries/rules/enforcePermissionsOnProfileLike.js.map +0 -1
- package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js +0 -42
- package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js.map +0 -1
- package/lib/libs/core/registries/rules/enforceSettings.js.map +0 -1
- package/lib/libs/core/registries/rules/noInactiveUsers.d.ts +0 -9
- package/lib/libs/core/registries/rules/noInactiveUsers.js.map +0 -1
- package/lib/libs/core/registries/rules/noOtherApexApiLogins.js.map +0 -1
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.d.ts +0 -7
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.js.map +0 -1
- package/lib/libs/core/registries/rules/policyRule.js.map +0 -1
- package/lib/libs/core/registries/settings.d.ts +0 -8
- package/lib/libs/core/registries/settings.js +0 -51
- package/lib/libs/core/registries/settings.js.map +0 -1
- package/lib/libs/core/registries/types.js +0 -13
- package/lib/libs/core/registries/types.js.map +0 -1
- package/lib/libs/core/registries/users.d.ts +0 -10
- package/lib/libs/core/registries/users.js +0 -17
- package/lib/libs/core/registries/users.js.map +0 -1
- package/lib/libs/core/result-types.js +0 -2
- package/lib/libs/core/result-types.js.map +0 -1
- package/lib/libs/core/utils.js.map +0 -1
- /package/lib/libs/{core/registries → audit-engine/registry}/rules/allUsedAppsUnderManagement.js +0 -0
- /package/lib/libs/{core/registries → audit-engine/registry}/rules/enforceSettings.js +0 -0
- /package/lib/libs/{core/registries → audit-engine/registry}/rules/noUserCanSelfAuthorize.js +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/metadataRegistryEntry.d.ts +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.d.ts +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/namedMetadataType.d.ts +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/namedMetadataType.js +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/singletonMetadataType.d.ts +0 -0
- /package/lib/{libs/core → salesforce}/mdapi/singletonMetadataType.js +0 -0
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import NamedMetadata from './namedMetadataType.js';
|
|
3
|
-
import SingletonMetadata from './singletonMetadataType.js';
|
|
4
|
-
import NamedMetadataQueryable from './namedMetadataToolingQueryable.js';
|
|
1
|
+
import { Registry } from './metadataRegistry.js';
|
|
5
2
|
export default class MDAPI {
|
|
6
3
|
connection;
|
|
4
|
+
registry;
|
|
7
5
|
static retrievers = new Map();
|
|
8
6
|
cache;
|
|
9
|
-
constructor(connection) {
|
|
7
|
+
constructor(connection, registry = Registry) {
|
|
10
8
|
this.connection = connection;
|
|
9
|
+
this.registry = registry;
|
|
11
10
|
this.cache = new MetadataCache();
|
|
12
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Clear all cached retrievers. Primarily for testing purposes.
|
|
14
|
+
*/
|
|
15
|
+
static clearCache() {
|
|
16
|
+
this.retrievers.clear();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a new MDAPI retriever instance and cache it.
|
|
20
|
+
*
|
|
21
|
+
* @param connection
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
13
24
|
static create(connection) {
|
|
14
25
|
if (!this.retrievers.has(connection.instanceUrl)) {
|
|
15
26
|
this.retrievers.set(connection.instanceUrl, new MDAPI(connection));
|
|
@@ -25,7 +36,7 @@ export default class MDAPI {
|
|
|
25
36
|
* @returns
|
|
26
37
|
*/
|
|
27
38
|
async resolve(typeName, componentNames) {
|
|
28
|
-
const retriever =
|
|
39
|
+
const retriever = this.registry.namedTypes[typeName];
|
|
29
40
|
const { toRetrieve, cached } = this.fetchCached(componentNames);
|
|
30
41
|
if (toRetrieve.length > 0) {
|
|
31
42
|
const retrieveResults = await retriever.resolve(this.connection, toRetrieve);
|
|
@@ -45,7 +56,7 @@ export default class MDAPI {
|
|
|
45
56
|
* @returns
|
|
46
57
|
*/
|
|
47
58
|
async resolveSingleton(typeName) {
|
|
48
|
-
const retriever =
|
|
59
|
+
const retriever = this.registry.singletonTypes[typeName];
|
|
49
60
|
const { toRetrieve, cached } = this.fetchCached([typeName]);
|
|
50
61
|
if (toRetrieve.length > 0) {
|
|
51
62
|
const retrieveResults = await retriever.resolve(this.connection);
|
|
@@ -88,36 +99,4 @@ class MetadataCache {
|
|
|
88
99
|
this.components[cmpName] = content;
|
|
89
100
|
}
|
|
90
101
|
}
|
|
91
|
-
|
|
92
|
-
PermissionSet: new NamedMetadata({
|
|
93
|
-
retrieveType: 'PermissionSet',
|
|
94
|
-
rootNodeName: 'PermissionSet',
|
|
95
|
-
parser: new XMLParser({
|
|
96
|
-
isArray: (jpath) => ['userPermissions', 'fieldPermissions', 'customPermissions', 'classAccesses'].includes(jpath),
|
|
97
|
-
}),
|
|
98
|
-
parsePostProcessor: (parseResult) => ({
|
|
99
|
-
...parseResult,
|
|
100
|
-
userPermissions: parseResult.userPermissions ?? [],
|
|
101
|
-
customPermissions: parseResult.customPermissions ?? [],
|
|
102
|
-
classAccesses: parseResult.classAccesses ?? [],
|
|
103
|
-
}),
|
|
104
|
-
}),
|
|
105
|
-
Profile: new NamedMetadataQueryable({
|
|
106
|
-
objectName: 'Profile',
|
|
107
|
-
nameField: 'Name',
|
|
108
|
-
parsePostProcessor: (parseResult) => ({
|
|
109
|
-
...parseResult,
|
|
110
|
-
userPermissions: parseResult.userPermissions ?? [],
|
|
111
|
-
customPermissions: parseResult.customPermissions ?? [],
|
|
112
|
-
classAccesses: parseResult.classAccesses ?? [],
|
|
113
|
-
}),
|
|
114
|
-
}),
|
|
115
|
-
};
|
|
116
|
-
export const SingletonRegistry = {
|
|
117
|
-
ConnectedAppSettings: new SingletonMetadata({
|
|
118
|
-
rootNodeName: 'ConnectedAppSettings',
|
|
119
|
-
retrieveName: 'ConnectedApp',
|
|
120
|
-
retrieveType: 'Settings',
|
|
121
|
-
}),
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=mdapiRetriever.js.map
|
|
102
|
+
//# sourceMappingURL=mdapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdapi.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/mdapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ConnectedAppSettings, PermissionSet, Profile as ProfileMetadata } from '@jsforce/jsforce-node/lib/api/metadata.js';
|
|
2
|
+
import NamedMetadata from './namedMetadataType.js';
|
|
3
|
+
import SingletonMetadata from './singletonMetadataType.js';
|
|
4
|
+
import NamedMetadataQueryable from './namedMetadataToolingQueryable.js';
|
|
5
|
+
import GenericSettingsMetadata from './genericSettingsMetadata.js';
|
|
6
|
+
type ProfileXml = {
|
|
7
|
+
Profile: ProfileMetadata;
|
|
8
|
+
};
|
|
9
|
+
type PermissionSetXml = {
|
|
10
|
+
PermissionSet: PermissionSet;
|
|
11
|
+
};
|
|
12
|
+
type ConnectedAppSettingsXml = {
|
|
13
|
+
ConnectedAppSettings: ConnectedAppSettings;
|
|
14
|
+
};
|
|
15
|
+
export type MdapiRegistry = typeof Registry;
|
|
16
|
+
export declare const Registry: {
|
|
17
|
+
namedTypes: {
|
|
18
|
+
PermissionSet: NamedMetadata<PermissionSetXml, "PermissionSet">;
|
|
19
|
+
Profile: NamedMetadataQueryable<ProfileXml, "Profile">;
|
|
20
|
+
Settings: GenericSettingsMetadata;
|
|
21
|
+
};
|
|
22
|
+
singletonTypes: {
|
|
23
|
+
ConnectedAppSettings: SingletonMetadata<ConnectedAppSettingsXml, "ConnectedAppSettings">;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { XMLParser } from 'fast-xml-parser';
|
|
2
|
+
import NamedMetadata from './namedMetadataType.js';
|
|
3
|
+
import SingletonMetadata from './singletonMetadataType.js';
|
|
4
|
+
import NamedMetadataQueryable from './namedMetadataToolingQueryable.js';
|
|
5
|
+
import GenericSettingsMetadata from './genericSettingsMetadata.js';
|
|
6
|
+
const NamedTypesRegistry = {
|
|
7
|
+
PermissionSet: new NamedMetadata({
|
|
8
|
+
retrieveType: 'PermissionSet',
|
|
9
|
+
rootNodeName: 'PermissionSet',
|
|
10
|
+
parser: new XMLParser({
|
|
11
|
+
isArray: (jpath) => ['userPermissions', 'fieldPermissions', 'customPermissions', 'classAccesses'].includes(jpath),
|
|
12
|
+
}),
|
|
13
|
+
parsePostProcessor: (parseResult) => ({
|
|
14
|
+
...parseResult,
|
|
15
|
+
userPermissions: parseResult.userPermissions ?? [],
|
|
16
|
+
customPermissions: parseResult.customPermissions ?? [],
|
|
17
|
+
classAccesses: parseResult.classAccesses ?? [],
|
|
18
|
+
}),
|
|
19
|
+
}),
|
|
20
|
+
Profile: new NamedMetadataQueryable({
|
|
21
|
+
objectName: 'Profile',
|
|
22
|
+
nameField: 'Name',
|
|
23
|
+
parsePostProcessor: (parseResult) => ({
|
|
24
|
+
...parseResult,
|
|
25
|
+
userPermissions: parseResult.userPermissions ?? [],
|
|
26
|
+
customPermissions: parseResult.customPermissions ?? [],
|
|
27
|
+
classAccesses: parseResult.classAccesses ?? [],
|
|
28
|
+
}),
|
|
29
|
+
}),
|
|
30
|
+
Settings: new GenericSettingsMetadata(),
|
|
31
|
+
};
|
|
32
|
+
const SingletonRegistry = {
|
|
33
|
+
ConnectedAppSettings: new SingletonMetadata({
|
|
34
|
+
rootNodeName: 'ConnectedAppSettings',
|
|
35
|
+
retrieveName: 'ConnectedApp',
|
|
36
|
+
retrieveType: 'Settings',
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
export const Registry = {
|
|
40
|
+
namedTypes: NamedTypesRegistry,
|
|
41
|
+
singletonTypes: SingletonRegistry,
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=metadataRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadataRegistry.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/metadataRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM5C,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AACxE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,MAAM,kBAAkB,GAAG;IACzB,aAAa,EAAE,IAAI,aAAa,CAAoC;QAClE,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,IAAI,SAAS,CAAC;YACpB,OAAO,EAAE,CAAC,KAAK,EAAW,EAAE,CAC1B,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;SAChG,CAAC;QACF,kBAAkB,EAAE,CAAC,WAAW,EAAiB,EAAE,CAAC,CAAC;YACnD,GAAG,WAAW;YACd,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,EAAE;YAClD,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtD,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,EAAE;SAC/C,CAAC;KACH,CAAC;IACF,OAAO,EAAE,IAAI,sBAAsB,CAAwB;QACzD,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,MAAM;QACjB,kBAAkB,EAAE,CAAC,WAAW,EAAmB,EAAE,CAAC,CAAC;YACrD,GAAG,WAAW;YACd,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,EAAE;YAClD,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtD,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,EAAE;SAC/C,CAAC;KACH,CAAC;IACF,QAAQ,EAAE,IAAI,uBAAuB,EAAE;CACxC,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,oBAAoB,EAAE,IAAI,iBAAiB,CAAkD;QAC3F,YAAY,EAAE,sBAAsB;QACpC,YAAY,EAAE,cAAc;QAC5B,YAAY,EAAE,UAAU;KACzB,CAAC;CACH,CAAC;AAgBF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,kBAAkB;IAC9B,cAAc,EAAE,iBAAiB;CAClC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync, rmSync } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { XMLParser } from 'fast-xml-parser';
|
|
4
|
-
import { RETRIEVE_CACHE } from '
|
|
4
|
+
import { RETRIEVE_CACHE } from './constants.js';
|
|
5
5
|
export default class MetadataRegistryEntry {
|
|
6
6
|
opts;
|
|
7
7
|
parser;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadataRegistryEntry.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/metadataRegistryEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA8BhD,MAAM,CAAC,OAAO,OAAgB,qBAAqB;IAKtB;IAJpB,MAAM,CAAY;IAClB,YAAY,CAAS;IACrB,YAAY,CAAM;IAEzB,YAA2B,IAA0C;QAA1C,SAAI,GAAJ,IAAI,CAAsC;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,YAAsB;QACjC,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAS,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE,GAAe;IACnE,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;QAC7C,oBAAoB,EAAE,GAAG;QACzB,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IAC1D,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAqB;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAClG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedMetadataToolingQueryable.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"namedMetadataToolingQueryable.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/namedMetadataToolingQueryable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoB3C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACd;IAA3B,YAA2B,IAA2C;QAA3C,SAAI,GAAJ,IAAI,CAAuC;IAAG,CAAC;IAC1E;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,cAAwB;QAC5D,MAAM,cAAc,GAAG,IAAI,KAAK,EAAmD,CAAC;QACpF,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CACxB,GAAG,CAAC,OAAO,CAAC,KAAK,CACf,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,KAAK,GAAG,CAChH,CACF,CAAC;YACF,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,SAAS,GAA8B,EAAE,CAAC;QAChD,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1B,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAW,CAAC;gBACzD,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9C,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB;wBAClD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC/C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedMetadataType.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/namedMetadataType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,EAEhB,QAAQ,GACT,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAA4C,SAAQ,qBAAgC;IACvG,YAAmB,IAA0C;QAC3D,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACD;;;;;;;OAOG;IACI,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,cAAwB;QAC5D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACvF,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,gBAAgB,CAAC,YAA0B,EAAE,cAAwB;QAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;YAC/B,IAAI,eAAe,CAAC,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzE,iEAAiE;gBACjE,kEAAkE;gBAClE,sDAAsD;gBACtD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singletonMetadataType.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/singletonMetadataType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,EAEhB,QAAQ,GACT,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAgD,SAAQ,qBAAgC;IACpG,YAAY,CAAS;IAC5B,YAAmB,IAA0C;QAC3D,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,OAAO,CAAC,GAAe;QAClC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpE,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,eAAe,CAAC,YAA0B;QAChD,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAClH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1E,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Record } from '@jsforce/jsforce-node';
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
export type SfConnectedApp = Record & {
|
|
4
|
+
Id: string;
|
|
5
|
+
Name: string;
|
|
6
|
+
OptionsAllowAdminApprovedUsersOnly: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type SfOauthToken = Record & {
|
|
9
|
+
Id: string;
|
|
10
|
+
User: {
|
|
11
|
+
Username: string;
|
|
12
|
+
};
|
|
13
|
+
AppName: string;
|
|
14
|
+
UseCount: number;
|
|
15
|
+
};
|
|
16
|
+
export type ConnectedApp = {
|
|
17
|
+
name: string;
|
|
18
|
+
origin: 'Installed' | 'OauthToken' | 'Owned';
|
|
19
|
+
onlyAdminApprovedUsersAllowed: boolean;
|
|
20
|
+
overrideByApiSecurityAccess: boolean;
|
|
21
|
+
useCount: number;
|
|
22
|
+
users: string[];
|
|
23
|
+
};
|
|
24
|
+
export declare const ResolveAppsOptionsSchema: z.ZodObject<{
|
|
25
|
+
withOAuthToken: z.ZodDefault<z.ZodBoolean>;
|
|
26
|
+
withOrgOwned: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
}, z.z.core.$strip>;
|
|
28
|
+
export type ResolveAppsOptions = z.infer<typeof ResolveAppsOptionsSchema>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connected-app.types.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/connected-apps/connected-app.types.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAwBpB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import { Connection } from '@salesforce/core';
|
|
3
|
+
import { ConnectedApp, ResolveAppsOptions } from './connected-app.types.js';
|
|
4
|
+
export default class ConnectedApps extends EventEmitter {
|
|
5
|
+
private readonly con;
|
|
6
|
+
private readonly mdapi;
|
|
7
|
+
constructor(con: Connection);
|
|
8
|
+
/**
|
|
9
|
+
* Resolves all connected apps from the org. Optionally include apps
|
|
10
|
+
* derived from users oauth tokens.
|
|
11
|
+
*
|
|
12
|
+
* @param opts
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
resolve(opts?: Partial<ResolveAppsOptions>): Promise<Map<string, ConnectedApp>>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import MDAPI from '../../mdapi/mdapi.js';
|
|
3
|
+
import { ResolveAppsOptionsSchema, } from './connected-app.types.js';
|
|
4
|
+
import { CONNECTED_APPS_QUERY, OAUTH_TOKEN_QUERY } from './queries.js';
|
|
5
|
+
export default class ConnectedApps extends EventEmitter {
|
|
6
|
+
con;
|
|
7
|
+
mdapi;
|
|
8
|
+
constructor(con) {
|
|
9
|
+
super();
|
|
10
|
+
this.con = con;
|
|
11
|
+
this.mdapi = MDAPI.create(this.con);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolves all connected apps from the org. Optionally include apps
|
|
15
|
+
* derived from users oauth tokens.
|
|
16
|
+
*
|
|
17
|
+
* @param opts
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
async resolve(opts) {
|
|
21
|
+
const definitiveOpts = ResolveAppsOptionsSchema.parse(opts ?? {});
|
|
22
|
+
this.emit('entityresolve', {
|
|
23
|
+
total: 0,
|
|
24
|
+
resolved: 0,
|
|
25
|
+
});
|
|
26
|
+
const installedApps = await this.con.query(CONNECTED_APPS_QUERY);
|
|
27
|
+
this.emit('entityresolve', {
|
|
28
|
+
total: installedApps.totalSize,
|
|
29
|
+
resolved: 0,
|
|
30
|
+
});
|
|
31
|
+
const apps = new Map();
|
|
32
|
+
for (const sfrecord of installedApps.records) {
|
|
33
|
+
apps.set(sfrecord.Name, {
|
|
34
|
+
name: sfrecord.Name,
|
|
35
|
+
origin: 'Installed',
|
|
36
|
+
onlyAdminApprovedUsersAllowed: sfrecord.OptionsAllowAdminApprovedUsersOnly,
|
|
37
|
+
overrideByApiSecurityAccess: false,
|
|
38
|
+
useCount: 0,
|
|
39
|
+
users: [],
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (definitiveOpts.withOAuthToken) {
|
|
43
|
+
const usersOAuthToken = await this.con.query(OAUTH_TOKEN_QUERY);
|
|
44
|
+
for (const sfToken of usersOAuthToken.records) {
|
|
45
|
+
const appRef = apps.get(sfToken.AppName);
|
|
46
|
+
if (appRef) {
|
|
47
|
+
appRef.useCount += sfToken.UseCount;
|
|
48
|
+
if (!appRef.users.includes(sfToken.User.Username)) {
|
|
49
|
+
appRef.users.push(sfToken.User.Username);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
apps.set(sfToken.AppName, {
|
|
54
|
+
name: sfToken.AppName,
|
|
55
|
+
origin: 'OauthToken',
|
|
56
|
+
onlyAdminApprovedUsersAllowed: false,
|
|
57
|
+
overrideByApiSecurityAccess: false,
|
|
58
|
+
useCount: sfToken.UseCount,
|
|
59
|
+
users: [sfToken.User.Username],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this.emit('entityresolve', {
|
|
64
|
+
total: apps.size,
|
|
65
|
+
resolved: 0,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
let overrideByApiSecurityAccess = false;
|
|
69
|
+
const apiSecurityAccessSetting = await this.mdapi.resolveSingleton('ConnectedAppSettings');
|
|
70
|
+
if (apiSecurityAccessSetting?.enableAdminApprovedAppsOnly) {
|
|
71
|
+
overrideByApiSecurityAccess = true;
|
|
72
|
+
}
|
|
73
|
+
for (const app of apps.values()) {
|
|
74
|
+
app.overrideByApiSecurityAccess = overrideByApiSecurityAccess;
|
|
75
|
+
}
|
|
76
|
+
this.emit('entityresolve', {
|
|
77
|
+
total: apps.size,
|
|
78
|
+
resolved: apps.size,
|
|
79
|
+
});
|
|
80
|
+
return apps;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=connected-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connected-apps.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/connected-apps/connected-apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/connected-apps/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,0EAA0E,CAAC;AAC/G,MAAM,CAAC,MAAM,iBAAiB,GAAG,uDAAuD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Record } from '@jsforce/jsforce-node';
|
|
2
|
+
import { PermissionSet as JsForcePermSet } from '@jsforce/jsforce-node/lib/api/metadata.js';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
export type PermissionSet = {
|
|
5
|
+
name: string;
|
|
6
|
+
isCustom: boolean;
|
|
7
|
+
metadata?: JsForcePermSet;
|
|
8
|
+
};
|
|
9
|
+
type SfParentProfile = Record & {
|
|
10
|
+
Id: string;
|
|
11
|
+
Name: string;
|
|
12
|
+
UserType: string;
|
|
13
|
+
};
|
|
14
|
+
export type SfPermissionSet = Record & {
|
|
15
|
+
Id: string;
|
|
16
|
+
IsOwnedByProfile: boolean;
|
|
17
|
+
IsCustom: boolean;
|
|
18
|
+
Name: string;
|
|
19
|
+
Label: string;
|
|
20
|
+
Profile: SfParentProfile;
|
|
21
|
+
NamespacePrefix?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const ResolvePermSetOptionsSchema: z.ZodObject<{
|
|
24
|
+
withMetadata: z.ZodDefault<z.ZodBoolean>;
|
|
25
|
+
filterNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
26
|
+
isCustomOnly: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
}, z.z.core.$strip>;
|
|
28
|
+
export type ResolvePermSetOptions = z.infer<typeof ResolvePermSetOptionsSchema>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export const ResolvePermSetOptionsSchema = z.object({
|
|
3
|
+
/** Resolves permission sets with metadata */
|
|
4
|
+
withMetadata: z.boolean().default(false),
|
|
5
|
+
/** Filters permission sets by their name */
|
|
6
|
+
filterNames: z.string().array().optional(),
|
|
7
|
+
/** Only includes custom permission sets */
|
|
8
|
+
isCustomOnly: z.boolean().default(false),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=perm-sets.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perm-sets.types.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/perm-sets/perm-sets.types.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAC;AAwBpB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,6CAA6C;IAC7C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,4CAA4C;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC1C,2CAA2C;IAC3C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import { Connection } from '@salesforce/core';
|
|
3
|
+
import { PermissionSet } from '../perm-sets/perm-sets.types.js';
|
|
4
|
+
import { ResolvePermSetOptions } from './perm-sets.types.js';
|
|
5
|
+
export default class PermissionSets extends EventEmitter {
|
|
6
|
+
private readonly con;
|
|
7
|
+
private readonly mdapi;
|
|
8
|
+
constructor(con: Connection);
|
|
9
|
+
resolve(opts?: Partial<ResolvePermSetOptions>): Promise<Map<string, PermissionSet>>;
|
|
10
|
+
private retrievePermsetsFromOrg;
|
|
11
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import MDAPI from '../../mdapi/mdapi.js';
|
|
3
|
+
import { ResolvePermSetOptionsSchema } from './perm-sets.types.js';
|
|
4
|
+
import { PERMISSION_SETS_QUERY } from './queries.js';
|
|
5
|
+
export default class PermissionSets extends EventEmitter {
|
|
6
|
+
con;
|
|
7
|
+
mdapi;
|
|
8
|
+
constructor(con) {
|
|
9
|
+
super();
|
|
10
|
+
this.con = con;
|
|
11
|
+
this.mdapi = MDAPI.create(this.con);
|
|
12
|
+
}
|
|
13
|
+
async resolve(opts) {
|
|
14
|
+
const defOpts = ResolvePermSetOptionsSchema.parse(opts ?? {});
|
|
15
|
+
const allPermsets = await this.retrievePermsetsFromOrg();
|
|
16
|
+
const permsetsToRetrieve = defOpts.filterNames ? defOpts.filterNames : Array.from(allPermsets.keys());
|
|
17
|
+
this.emit('entityresolve', { total: permsetsToRetrieve.length, resolved: 0 });
|
|
18
|
+
const resolvedPermsets = defOpts.withMetadata ? await this.mdapi.resolve('PermissionSet', permsetsToRetrieve) : {};
|
|
19
|
+
const results = new Map();
|
|
20
|
+
for (const permsetName of permsetsToRetrieve) {
|
|
21
|
+
const permsetRecord = allPermsets.get(permsetName);
|
|
22
|
+
const permsetMdata = resolvedPermsets[permsetName];
|
|
23
|
+
if (!(permsetRecord && ((defOpts.withMetadata && permsetMdata) || !defOpts.withMetadata))) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (defOpts.isCustomOnly && !permsetRecord.IsCustom) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
results.set(permsetName, {
|
|
30
|
+
metadata: permsetMdata,
|
|
31
|
+
isCustom: permsetRecord.IsCustom ?? true,
|
|
32
|
+
name: permsetName,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
this.emit('entityresolve', { total: permsetsToRetrieve.length, resolved: results.size });
|
|
36
|
+
return results;
|
|
37
|
+
}
|
|
38
|
+
async retrievePermsetsFromOrg() {
|
|
39
|
+
const permsets = await this.con.query(PERMISSION_SETS_QUERY);
|
|
40
|
+
return new Map(permsets.records.map((permset) => [permset.Name, permset]));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=permission-sets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-sets.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/perm-sets/permission-sets.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AAEvC,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAEzC,OAAO,EAAyB,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IAGlB;IAFnB,KAAK,CAAQ;IAE9B,YAAoC,GAAe;QACjD,KAAK,EAAE,CAAC;QAD0B,QAAG,GAAH,GAAG,CAAY;QAEjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAqC;QACxD,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACzD,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;QACjD,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBAC1F,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACpD,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvB,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,IAAI;gBACxC,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAkB,qBAAqB,CAAC,CAAC;QAC9E,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PERMISSION_SETS_QUERY = "SELECT Name,Label,IsCustom,NamespacePrefix FROM PermissionSet WHERE IsOwnedByProfile = FALSE AND NamespacePrefix = NULL";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/perm-sets/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAChC,yHAAyH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { Record } from '@jsforce/jsforce-node';
|
|
3
|
+
import { Profile as JsForceProfile } from '@jsforce/jsforce-node/lib/api/metadata.js';
|
|
4
|
+
export type Profile = {
|
|
5
|
+
profileId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
userType: string;
|
|
8
|
+
metadata?: JsForceProfile;
|
|
9
|
+
};
|
|
10
|
+
export type PermissionSet = Record & {
|
|
11
|
+
Id: string;
|
|
12
|
+
IsOwnedByProfile: boolean;
|
|
13
|
+
IsCustom: boolean;
|
|
14
|
+
Name: string;
|
|
15
|
+
Label: string;
|
|
16
|
+
Profile: SfProfile;
|
|
17
|
+
NamespacePrefix?: string;
|
|
18
|
+
};
|
|
19
|
+
type SfProfile = Record & {
|
|
20
|
+
Id: string;
|
|
21
|
+
Name: string;
|
|
22
|
+
UserType: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const ResolveProfilesOptionsSchema: z.ZodObject<{
|
|
25
|
+
withMetadata: z.ZodDefault<z.ZodBoolean>;
|
|
26
|
+
filterNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
}, z.z.core.$strip>;
|
|
28
|
+
export type ResolveProfilesOptions = z.infer<typeof ResolveProfilesOptionsSchema>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export const ResolveProfilesOptionsSchema = z.object({
|
|
3
|
+
/** Resolves profiles with metadata */
|
|
4
|
+
withMetadata: z.boolean().default(false),
|
|
5
|
+
/** Filters profiles by their name */
|
|
6
|
+
filterNames: z.string().array().optional(),
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=profile.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.types.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/profiles/profile.types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AA2BpB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,sCAAsC;IACtC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,qCAAqC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
import { Profile, ResolveProfilesOptions } from './profile.types.js';
|
|
3
|
+
export default class Profiles {
|
|
4
|
+
private readonly con;
|
|
5
|
+
private readonly mdapi;
|
|
6
|
+
constructor(con: Connection);
|
|
7
|
+
/**
|
|
8
|
+
* Resolves all profiles from the org, optionally with metadata
|
|
9
|
+
*
|
|
10
|
+
* @param opts
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
resolve(opts?: Partial<ResolveProfilesOptions>): Promise<Map<string, Profile>>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import MDAPI from '../../mdapi/mdapi.js';
|
|
2
|
+
import { buildProfilesQuery } from './queries.js';
|
|
3
|
+
import { ResolveProfilesOptionsSchema } from './profile.types.js';
|
|
4
|
+
export default class Profiles {
|
|
5
|
+
con;
|
|
6
|
+
mdapi;
|
|
7
|
+
constructor(con) {
|
|
8
|
+
this.con = con;
|
|
9
|
+
this.mdapi = MDAPI.create(this.con);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolves all profiles from the org, optionally with metadata
|
|
13
|
+
*
|
|
14
|
+
* @param opts
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
async resolve(opts) {
|
|
18
|
+
const definitiveOpts = ResolveProfilesOptionsSchema.parse(opts ?? {});
|
|
19
|
+
const result = new Map();
|
|
20
|
+
const profilePermsets = await this.con.query(buildProfilesQuery(definitiveOpts.filterNames));
|
|
21
|
+
const resolved = definitiveOpts.withMetadata
|
|
22
|
+
? await this.mdapi.resolve('Profile', profilePermsets.records.map((permsetRecord) => permsetRecord.Profile.Name))
|
|
23
|
+
: {};
|
|
24
|
+
for (const sfPermSet of profilePermsets.records) {
|
|
25
|
+
result.set(sfPermSet.Profile.Name, {
|
|
26
|
+
profileId: sfPermSet.Profile.Id,
|
|
27
|
+
userType: sfPermSet.Profile.UserType,
|
|
28
|
+
name: sfPermSet.Profile.Name,
|
|
29
|
+
metadata: resolved[sfPermSet.Profile.Name],
|
|
30
|
+
});
|
|
31
|
+
if (definitiveOpts.withMetadata && resolved[sfPermSet.Profile.Name] === undefined) {
|
|
32
|
+
result.delete(sfPermSet.Profile.Name);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/profiles/profiles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAkD,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAGS;IAFnB,KAAK,CAAQ;IAE9B,YAAoC,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,IAAsC;QACzD,MAAM,cAAc,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC1C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAgB,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5G,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY;YAC1C,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,SAAS,EACT,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAC3E;YACH,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC/B,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ;gBACpC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI;gBAC5B,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;aAC3C,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const PROFILES_QUERY = 'SELECT Profile.Name,Profile.UserType,IsCustom FROM PermissionSet WHERE IsOwnedByProfile = TRUE';
|
|
2
|
+
export function buildProfilesQuery(profileNames) {
|
|
3
|
+
return profileNames && profileNames.length > 0
|
|
4
|
+
? `${PROFILES_QUERY} AND Profile.Name IN (${profileNames.map((name) => `'${name}'`).join(',')})`
|
|
5
|
+
: PROFILES_QUERY;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/profiles/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GACzB,gGAAgG,CAAC;AAEnG,MAAM,UAAU,kBAAkB,CAAC,YAAuB;IACxD,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC,GAAG,cAAc,yBAAyB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QAChG,CAAC,CAAC,cAAc,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const ACTIVE_USERS_DETAILS_QUERY = "SELECT Id,Username,Profile.Name,CreatedDate,LastLoginDate FROM User WHERE IsActive = TRUE AND UserType IN ('Standard') LIMIT 2000";
|
|
2
|
+
export declare const buildPermsetAssignmentsQuery: (userIds: string[]) => string;
|
|
3
|
+
export declare const buildLoginHistoryQuery: (daysToAnalayse?: number) => string;
|