@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.
Files changed (276) hide show
  1. package/README.md +3 -3
  2. package/lib/commands/org/audit/init.d.ts +5 -3
  3. package/lib/commands/org/audit/init.js +14 -20
  4. package/lib/commands/org/audit/init.js.map +1 -1
  5. package/lib/commands/org/audit/run.d.ts +1 -1
  6. package/lib/commands/org/audit/run.js +5 -3
  7. package/lib/commands/org/audit/run.js.map +1 -1
  8. package/lib/commands/org/scan/user-perms.js +1 -1
  9. package/lib/commands/org/scan/user-perms.js.map +1 -1
  10. package/lib/libs/{core → audit-engine}/auditRun.d.ts +6 -7
  11. package/lib/libs/{core → audit-engine}/auditRun.js +20 -16
  12. package/lib/libs/audit-engine/auditRun.js.map +1 -0
  13. package/lib/libs/audit-engine/file-manager/fileManager.d.ts +31 -0
  14. package/lib/libs/audit-engine/file-manager/fileManager.js +139 -0
  15. package/lib/libs/audit-engine/file-manager/fileManager.js.map +1 -0
  16. package/lib/libs/audit-engine/file-manager/fileManager.types.d.ts +30 -0
  17. package/lib/libs/audit-engine/file-manager/fileManager.types.js +2 -0
  18. package/lib/libs/audit-engine/file-manager/fileManager.types.js.map +1 -0
  19. package/lib/libs/audit-engine/index.d.ts +121 -0
  20. package/lib/libs/audit-engine/index.js +9 -0
  21. package/lib/libs/audit-engine/index.js.map +1 -0
  22. package/lib/libs/{core/registries/types.d.ts → audit-engine/registry/context.types.d.ts} +6 -10
  23. package/lib/libs/audit-engine/registry/context.types.js +2 -0
  24. package/lib/libs/audit-engine/registry/context.types.js.map +1 -0
  25. package/lib/libs/audit-engine/registry/definitions.d.ts +23 -0
  26. package/lib/libs/audit-engine/registry/definitions.js +53 -0
  27. package/lib/libs/audit-engine/registry/definitions.js.map +1 -0
  28. package/lib/libs/{core/registries → audit-engine/registry}/helpers/permissionsScanning.d.ts +12 -2
  29. package/lib/libs/{core/registries → audit-engine/registry}/helpers/permissionsScanning.js +15 -3
  30. package/lib/libs/audit-engine/registry/helpers/permissionsScanning.js.map +1 -0
  31. package/lib/libs/audit-engine/registry/policies/connectedApps.d.ts +12 -0
  32. package/lib/libs/audit-engine/registry/policies/connectedApps.js +22 -0
  33. package/lib/libs/audit-engine/registry/policies/connectedApps.js.map +1 -0
  34. package/lib/libs/audit-engine/registry/policies/permissionSets.d.ts +18 -0
  35. package/lib/libs/audit-engine/registry/policies/permissionSets.js +80 -0
  36. package/lib/libs/audit-engine/registry/policies/permissionSets.js.map +1 -0
  37. package/lib/libs/audit-engine/registry/policies/profiles.d.ts +18 -0
  38. package/lib/libs/audit-engine/registry/policies/profiles.js +76 -0
  39. package/lib/libs/audit-engine/registry/policies/profiles.js.map +1 -0
  40. package/lib/libs/audit-engine/registry/policies/settings.d.ts +18 -0
  41. package/lib/libs/{core/policies/settingsPolicy.js → audit-engine/registry/policies/settings.js} +48 -18
  42. package/lib/libs/audit-engine/registry/policies/settings.js.map +1 -0
  43. package/lib/libs/audit-engine/registry/policies/users.d.ts +19 -0
  44. package/lib/libs/audit-engine/registry/policies/users.js +76 -0
  45. package/lib/libs/audit-engine/registry/policies/users.js.map +1 -0
  46. package/lib/libs/{core/policies → audit-engine/registry}/policy.d.ts +7 -6
  47. package/lib/libs/{core/policies → audit-engine/registry}/policy.js +2 -0
  48. package/lib/libs/audit-engine/registry/policy.js.map +1 -0
  49. package/lib/libs/{core/result-types.d.ts → audit-engine/registry/result.types.d.ts} +2 -2
  50. package/lib/libs/audit-engine/registry/result.types.js +2 -0
  51. package/lib/libs/audit-engine/registry/result.types.js.map +1 -0
  52. package/lib/libs/{core/registries → audit-engine/registry}/ruleRegistry.d.ts +10 -7
  53. package/lib/libs/{core/registries → audit-engine/registry}/ruleRegistry.js +7 -7
  54. package/lib/libs/audit-engine/registry/ruleRegistry.js.map +1 -0
  55. package/lib/libs/audit-engine/registry/rules/allUsedAppsUnderManagement.d.ts +7 -0
  56. package/lib/libs/audit-engine/registry/rules/allUsedAppsUnderManagement.js.map +1 -0
  57. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionPresets.d.ts +4 -2
  58. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionPresets.js +17 -15
  59. package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js.map +1 -0
  60. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnProfileLike.d.ts +1 -1
  61. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnProfileLike.js +3 -3
  62. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js.map +1 -0
  63. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforcePermissionsOnUser.d.ts +2 -2
  64. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js +38 -0
  65. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js.map +1 -0
  66. package/lib/libs/{core/registries → audit-engine/registry}/rules/enforceSettings.d.ts +2 -2
  67. package/lib/libs/audit-engine/registry/rules/enforceSettings.js.map +1 -0
  68. package/lib/libs/audit-engine/registry/rules/noInactiveUsers.d.ts +14 -0
  69. package/lib/libs/{core/registries → audit-engine/registry}/rules/noInactiveUsers.js +17 -4
  70. package/lib/libs/audit-engine/registry/rules/noInactiveUsers.js.map +1 -0
  71. package/lib/libs/{core/registries → audit-engine/registry}/rules/noOtherApexApiLogins.d.ts +2 -2
  72. package/lib/libs/{core/registries → audit-engine/registry}/rules/noOtherApexApiLogins.js +4 -1
  73. package/lib/libs/audit-engine/registry/rules/noOtherApexApiLogins.js.map +1 -0
  74. package/lib/libs/audit-engine/registry/rules/noUserCanSelfAuthorize.d.ts +7 -0
  75. package/lib/libs/audit-engine/registry/rules/noUserCanSelfAuthorize.js.map +1 -0
  76. package/lib/libs/{core/registries → audit-engine/registry}/rules/policyRule.d.ts +4 -6
  77. package/lib/libs/{core/registries → audit-engine/registry}/rules/policyRule.js +2 -12
  78. package/lib/libs/audit-engine/registry/rules/policyRule.js.map +1 -0
  79. package/lib/libs/audit-engine/registry/schema.d.ts +2 -0
  80. package/lib/libs/audit-engine/registry/schema.js +11 -0
  81. package/lib/libs/audit-engine/registry/schema.js.map +1 -0
  82. package/lib/libs/audit-engine/registry/shape/auditConfigShape.d.ts +122 -0
  83. package/lib/libs/audit-engine/registry/shape/auditConfigShape.js +54 -0
  84. package/lib/libs/audit-engine/registry/shape/auditConfigShape.js.map +1 -0
  85. package/lib/libs/audit-engine/registry/shape/schema.d.ts +96 -0
  86. package/lib/libs/audit-engine/registry/shape/schema.js +84 -0
  87. package/lib/libs/audit-engine/registry/shape/schema.js.map +1 -0
  88. package/lib/libs/conf-init/auditConfig.d.ts +3 -12
  89. package/lib/libs/conf-init/auditConfig.js +25 -25
  90. package/lib/libs/conf-init/auditConfig.js.map +1 -1
  91. package/lib/libs/conf-init/defaultClassifications.d.ts +8 -0
  92. package/lib/libs/conf-init/defaultClassifications.js +116 -0
  93. package/lib/libs/conf-init/defaultClassifications.js.map +1 -0
  94. package/lib/libs/conf-init/defaultPolicies.d.ts +2 -0
  95. package/lib/libs/conf-init/defaultPolicies.js +20 -0
  96. package/lib/libs/conf-init/defaultPolicies.js.map +1 -0
  97. package/lib/libs/conf-init/init.types.d.ts +27 -0
  98. package/lib/libs/conf-init/init.types.js +8 -0
  99. package/lib/libs/conf-init/init.types.js.map +1 -0
  100. package/lib/libs/conf-init/presets/loose.d.ts +1 -1
  101. package/lib/libs/conf-init/presets/loose.js +4 -2
  102. package/lib/libs/conf-init/presets/loose.js.map +1 -1
  103. package/lib/libs/conf-init/presets/none.d.ts +2 -7
  104. package/lib/libs/conf-init/presets/none.js +1 -1
  105. package/lib/libs/conf-init/presets/none.js.map +1 -1
  106. package/lib/libs/conf-init/presets/strict.js +3 -1
  107. package/lib/libs/conf-init/presets/strict.js.map +1 -1
  108. package/lib/libs/conf-init/presets.d.ts +1 -6
  109. package/lib/libs/conf-init/presets.js +1 -6
  110. package/lib/libs/conf-init/presets.js.map +1 -1
  111. package/lib/libs/quick-scan/userPermissionScanner.js +17 -13
  112. package/lib/libs/quick-scan/userPermissionScanner.js.map +1 -1
  113. package/lib/salesforce/index.d.ts +10 -0
  114. package/lib/salesforce/index.js +8 -0
  115. package/lib/salesforce/index.js.map +1 -0
  116. package/lib/salesforce/mdapi/constants.d.ts +1 -0
  117. package/lib/salesforce/mdapi/constants.js +3 -0
  118. package/lib/salesforce/mdapi/constants.js.map +1 -0
  119. package/lib/{libs/core/mdapi/anySettingsMetadata.d.ts → salesforce/mdapi/genericSettingsMetadata.d.ts} +3 -4
  120. package/lib/{libs/core/mdapi/anySettingsMetadata.js → salesforce/mdapi/genericSettingsMetadata.js} +8 -10
  121. package/lib/salesforce/mdapi/genericSettingsMetadata.js.map +1 -0
  122. package/lib/salesforce/mdapi/mdapi.d.ts +46 -0
  123. package/lib/{libs/core/mdapi/mdapiRetriever.js → salesforce/mdapi/mdapi.js} +19 -40
  124. package/lib/salesforce/mdapi/mdapi.js.map +1 -0
  125. package/lib/salesforce/mdapi/metadataRegistry.d.ts +26 -0
  126. package/lib/salesforce/mdapi/metadataRegistry.js +43 -0
  127. package/lib/salesforce/mdapi/metadataRegistry.js.map +1 -0
  128. package/lib/{libs/core → salesforce}/mdapi/metadataRegistryEntry.js +1 -1
  129. package/lib/salesforce/mdapi/metadataRegistryEntry.js.map +1 -0
  130. package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.js +1 -1
  131. package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.js.map +1 -1
  132. package/lib/salesforce/mdapi/namedMetadataType.js.map +1 -0
  133. package/lib/salesforce/mdapi/singletonMetadataType.js.map +1 -0
  134. package/lib/salesforce/repositories/connected-apps/connected-app.types.d.ts +28 -0
  135. package/lib/salesforce/repositories/connected-apps/connected-app.types.js +6 -0
  136. package/lib/salesforce/repositories/connected-apps/connected-app.types.js.map +1 -0
  137. package/lib/salesforce/repositories/connected-apps/connected-apps.d.ts +16 -0
  138. package/lib/salesforce/repositories/connected-apps/connected-apps.js +83 -0
  139. package/lib/salesforce/repositories/connected-apps/connected-apps.js.map +1 -0
  140. package/lib/salesforce/repositories/connected-apps/queries.d.ts +2 -0
  141. package/lib/salesforce/repositories/connected-apps/queries.js +3 -0
  142. package/lib/salesforce/repositories/connected-apps/queries.js.map +1 -0
  143. package/lib/salesforce/repositories/perm-sets/perm-sets.types.d.ts +29 -0
  144. package/lib/salesforce/repositories/perm-sets/perm-sets.types.js +10 -0
  145. package/lib/salesforce/repositories/perm-sets/perm-sets.types.js.map +1 -0
  146. package/lib/salesforce/repositories/perm-sets/permission-sets.d.ts +11 -0
  147. package/lib/salesforce/repositories/perm-sets/permission-sets.js +43 -0
  148. package/lib/salesforce/repositories/perm-sets/permission-sets.js.map +1 -0
  149. package/lib/salesforce/repositories/perm-sets/queries.d.ts +1 -0
  150. package/lib/salesforce/repositories/perm-sets/queries.js +2 -0
  151. package/lib/salesforce/repositories/perm-sets/queries.js.map +1 -0
  152. package/lib/salesforce/repositories/profiles/profile.types.d.ts +29 -0
  153. package/lib/salesforce/repositories/profiles/profile.types.js +8 -0
  154. package/lib/salesforce/repositories/profiles/profile.types.js.map +1 -0
  155. package/lib/salesforce/repositories/profiles/profiles.d.ts +14 -0
  156. package/lib/salesforce/repositories/profiles/profiles.js +38 -0
  157. package/lib/salesforce/repositories/profiles/profiles.js.map +1 -0
  158. package/lib/salesforce/repositories/profiles/queries.d.ts +2 -0
  159. package/lib/salesforce/repositories/profiles/queries.js +7 -0
  160. package/lib/salesforce/repositories/profiles/queries.js.map +1 -0
  161. package/lib/salesforce/repositories/users/queries.d.ts +3 -0
  162. package/lib/{libs/core/constants.js → salesforce/repositories/users/queries.js} +1 -11
  163. package/lib/salesforce/repositories/users/queries.js.map +1 -0
  164. package/lib/salesforce/repositories/users/user.types.d.ts +54 -0
  165. package/lib/salesforce/repositories/users/user.types.js +12 -0
  166. package/lib/salesforce/repositories/users/user.types.js.map +1 -0
  167. package/lib/salesforce/repositories/users/users.d.ts +22 -0
  168. package/lib/salesforce/repositories/users/users.js +134 -0
  169. package/lib/salesforce/repositories/users/users.js.map +1 -0
  170. package/lib/{libs/core/utils.d.ts → utils.d.ts} +2 -0
  171. package/lib/{libs/core/utils.js → utils.js} +26 -0
  172. package/lib/utils.js.map +1 -0
  173. package/lib/ux/auditRunMultiStage.d.ts +1 -1
  174. package/lib/ux/auditRunMultiStage.js +5 -5
  175. package/lib/ux/auditRunMultiStage.js.map +1 -1
  176. package/messages/policies.general.md +9 -1
  177. package/messages/policyclassifications.md +8 -0
  178. package/messages/rules.enforceClassificationPresets.md +2 -2
  179. package/messages/rules.users.md +1 -1
  180. package/oclif.manifest.json +1 -1
  181. package/package.json +1 -1
  182. package/lib/libs/conf-init/permissionsClassification.d.ts +0 -37
  183. package/lib/libs/conf-init/permissionsClassification.js +0 -126
  184. package/lib/libs/conf-init/permissionsClassification.js.map +0 -1
  185. package/lib/libs/conf-init/policyConfigs.d.ts +0 -21
  186. package/lib/libs/conf-init/policyConfigs.js +0 -47
  187. package/lib/libs/conf-init/policyConfigs.js.map +0 -1
  188. package/lib/libs/core/auditRun.js.map +0 -1
  189. package/lib/libs/core/classification-types.d.ts +0 -20
  190. package/lib/libs/core/classification-types.js +0 -23
  191. package/lib/libs/core/classification-types.js.map +0 -1
  192. package/lib/libs/core/constants.d.ts +0 -10
  193. package/lib/libs/core/constants.js.map +0 -1
  194. package/lib/libs/core/file-mgmt/auditConfigFileManager.d.ts +0 -48
  195. package/lib/libs/core/file-mgmt/auditConfigFileManager.js +0 -145
  196. package/lib/libs/core/file-mgmt/auditConfigFileManager.js.map +0 -1
  197. package/lib/libs/core/file-mgmt/schema.d.ts +0 -156
  198. package/lib/libs/core/file-mgmt/schema.js +0 -81
  199. package/lib/libs/core/file-mgmt/schema.js.map +0 -1
  200. package/lib/libs/core/mdapi/anySettingsMetadata.js.map +0 -1
  201. package/lib/libs/core/mdapi/mdapiRetriever.d.ts +0 -54
  202. package/lib/libs/core/mdapi/mdapiRetriever.js.map +0 -1
  203. package/lib/libs/core/mdapi/metadataRegistryEntry.js.map +0 -1
  204. package/lib/libs/core/mdapi/namedMetadataType.js.map +0 -1
  205. package/lib/libs/core/mdapi/singletonMetadataType.js.map +0 -1
  206. package/lib/libs/core/mdapi/usersRepository.d.ts +0 -85
  207. package/lib/libs/core/mdapi/usersRepository.js +0 -126
  208. package/lib/libs/core/mdapi/usersRepository.js.map +0 -1
  209. package/lib/libs/core/policies/connectedAppPolicy.d.ts +0 -10
  210. package/lib/libs/core/policies/connectedAppPolicy.js +0 -78
  211. package/lib/libs/core/policies/connectedAppPolicy.js.map +0 -1
  212. package/lib/libs/core/policies/permissionSetPolicy.d.ts +0 -12
  213. package/lib/libs/core/policies/permissionSetPolicy.js +0 -64
  214. package/lib/libs/core/policies/permissionSetPolicy.js.map +0 -1
  215. package/lib/libs/core/policies/policy.js.map +0 -1
  216. package/lib/libs/core/policies/profilePolicy.d.ts +0 -12
  217. package/lib/libs/core/policies/profilePolicy.js +0 -65
  218. package/lib/libs/core/policies/profilePolicy.js.map +0 -1
  219. package/lib/libs/core/policies/salesforceStandardTypes.d.ts +0 -58
  220. package/lib/libs/core/policies/salesforceStandardTypes.js +0 -2
  221. package/lib/libs/core/policies/salesforceStandardTypes.js.map +0 -1
  222. package/lib/libs/core/policies/settingsPolicy.d.ts +0 -11
  223. package/lib/libs/core/policies/settingsPolicy.js.map +0 -1
  224. package/lib/libs/core/policies/userPolicy.d.ts +0 -12
  225. package/lib/libs/core/policies/userPolicy.js +0 -62
  226. package/lib/libs/core/policies/userPolicy.js.map +0 -1
  227. package/lib/libs/core/policy-types.d.ts +0 -18
  228. package/lib/libs/core/policy-types.js +0 -28
  229. package/lib/libs/core/policy-types.js.map +0 -1
  230. package/lib/libs/core/policyRegistry.d.ts +0 -23
  231. package/lib/libs/core/policyRegistry.js +0 -52
  232. package/lib/libs/core/policyRegistry.js.map +0 -1
  233. package/lib/libs/core/registries/connectedApps.d.ts +0 -13
  234. package/lib/libs/core/registries/connectedApps.js +0 -13
  235. package/lib/libs/core/registries/connectedApps.js.map +0 -1
  236. package/lib/libs/core/registries/helpers/permissionsScanning.js.map +0 -1
  237. package/lib/libs/core/registries/permissionSets.d.ts +0 -11
  238. package/lib/libs/core/registries/permissionSets.js +0 -11
  239. package/lib/libs/core/registries/permissionSets.js.map +0 -1
  240. package/lib/libs/core/registries/profiles.d.ts +0 -11
  241. package/lib/libs/core/registries/profiles.js +0 -11
  242. package/lib/libs/core/registries/profiles.js.map +0 -1
  243. package/lib/libs/core/registries/ruleRegistry.js.map +0 -1
  244. package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.d.ts +0 -7
  245. package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.js.map +0 -1
  246. package/lib/libs/core/registries/rules/enforcePermissionPresets.js.map +0 -1
  247. package/lib/libs/core/registries/rules/enforcePermissionsOnProfileLike.js.map +0 -1
  248. package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js +0 -42
  249. package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js.map +0 -1
  250. package/lib/libs/core/registries/rules/enforceSettings.js.map +0 -1
  251. package/lib/libs/core/registries/rules/noInactiveUsers.d.ts +0 -9
  252. package/lib/libs/core/registries/rules/noInactiveUsers.js.map +0 -1
  253. package/lib/libs/core/registries/rules/noOtherApexApiLogins.js.map +0 -1
  254. package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.d.ts +0 -7
  255. package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.js.map +0 -1
  256. package/lib/libs/core/registries/rules/policyRule.js.map +0 -1
  257. package/lib/libs/core/registries/settings.d.ts +0 -8
  258. package/lib/libs/core/registries/settings.js +0 -51
  259. package/lib/libs/core/registries/settings.js.map +0 -1
  260. package/lib/libs/core/registries/types.js +0 -13
  261. package/lib/libs/core/registries/types.js.map +0 -1
  262. package/lib/libs/core/registries/users.d.ts +0 -10
  263. package/lib/libs/core/registries/users.js +0 -17
  264. package/lib/libs/core/registries/users.js.map +0 -1
  265. package/lib/libs/core/result-types.js +0 -2
  266. package/lib/libs/core/result-types.js.map +0 -1
  267. package/lib/libs/core/utils.js.map +0 -1
  268. /package/lib/libs/{core/registries → audit-engine/registry}/rules/allUsedAppsUnderManagement.js +0 -0
  269. /package/lib/libs/{core/registries → audit-engine/registry}/rules/enforceSettings.js +0 -0
  270. /package/lib/libs/{core/registries → audit-engine/registry}/rules/noUserCanSelfAuthorize.js +0 -0
  271. /package/lib/{libs/core → salesforce}/mdapi/metadataRegistryEntry.d.ts +0 -0
  272. /package/lib/{libs/core → salesforce}/mdapi/namedMetadataToolingQueryable.d.ts +0 -0
  273. /package/lib/{libs/core → salesforce}/mdapi/namedMetadataType.d.ts +0 -0
  274. /package/lib/{libs/core → salesforce}/mdapi/namedMetadataType.js +0 -0
  275. /package/lib/{libs/core → salesforce}/mdapi/singletonMetadataType.d.ts +0 -0
  276. /package/lib/{libs/core → salesforce}/mdapi/singletonMetadataType.js +0 -0
@@ -1,15 +1,26 @@
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';
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 = NamedTypesRegistry[typeName];
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 = SingletonRegistry[typeName];
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
- export const NamedTypesRegistry = {
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 '../constants.js';
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,4 +1,4 @@
1
- import { isNullish } from '../utils.js';
1
+ import { isNullish } from '../../utils.js';
2
2
  /**
3
3
  * The entry is a typical named metadata that is organized in a dedicated source folder
4
4
  * where all entities have the same format. The components are queried from tooling API
@@ -1 +1 @@
1
- {"version":3,"file":"namedMetadataToolingQueryable.js","sourceRoot":"","sources":["../../../../src/libs/core/mdapi/namedMetadataToolingQueryable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoBxC;;;;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"}
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,6 @@
1
+ import z from 'zod';
2
+ export const ResolveAppsOptionsSchema = z.object({
3
+ withOAuthToken: z.boolean().default(false),
4
+ withOrgOwned: z.boolean().default(false),
5
+ });
6
+ //# sourceMappingURL=connected-app.types.js.map
@@ -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,2 @@
1
+ export declare const CONNECTED_APPS_QUERY = "SELECT Name,OptionsAllowAdminApprovedUsersOnly FROM ConnectedApplication";
2
+ export declare const OAUTH_TOKEN_QUERY = "SELECT User.Username,UseCount,AppName FROM OauthToken";
@@ -0,0 +1,3 @@
1
+ export const CONNECTED_APPS_QUERY = 'SELECT Name,OptionsAllowAdminApprovedUsersOnly FROM ConnectedApplication';
2
+ export const OAUTH_TOKEN_QUERY = 'SELECT User.Username,UseCount,AppName FROM OauthToken';
3
+ //# sourceMappingURL=queries.js.map
@@ -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,2 @@
1
+ export const PERMISSION_SETS_QUERY = 'SELECT Name,Label,IsCustom,NamespacePrefix FROM PermissionSet WHERE IsOwnedByProfile = FALSE AND NamespacePrefix = NULL';
2
+ //# sourceMappingURL=queries.js.map
@@ -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,2 @@
1
+ export declare const PROFILES_QUERY = "SELECT Profile.Name,Profile.UserType,IsCustom FROM PermissionSet WHERE IsOwnedByProfile = TRUE";
2
+ export declare function buildProfilesQuery(profileNames?: string[]): string;
@@ -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;