@j-schreiber/sf-cli-security-audit 0.22.0 → 0.24.0

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 (86) hide show
  1. package/README.md +3 -3
  2. package/lib/libs/audit-engine/auditRun.js +6 -7
  3. package/lib/libs/audit-engine/auditRun.js.map +1 -1
  4. package/lib/libs/audit-engine/index.d.ts +21 -0
  5. package/lib/libs/audit-engine/registry/definitions.d.ts +23 -0
  6. package/lib/libs/audit-engine/registry/definitions.js +8 -0
  7. package/lib/libs/audit-engine/registry/definitions.js.map +1 -1
  8. package/lib/libs/audit-engine/registry/policies/connectedApps.js +1 -1
  9. package/lib/libs/audit-engine/registry/policies/connectedApps.js.map +1 -1
  10. package/lib/libs/audit-engine/registry/policies/objects.d.ts +12 -0
  11. package/lib/libs/audit-engine/registry/policies/objects.js +18 -0
  12. package/lib/libs/audit-engine/registry/policies/objects.js.map +1 -0
  13. package/lib/libs/audit-engine/registry/policies/permissionSets.js +4 -4
  14. package/lib/libs/audit-engine/registry/policies/permissionSets.js.map +1 -1
  15. package/lib/libs/audit-engine/registry/policies/profiles.d.ts +0 -2
  16. package/lib/libs/audit-engine/registry/policies/profiles.js +0 -5
  17. package/lib/libs/audit-engine/registry/policies/profiles.js.map +1 -1
  18. package/lib/libs/audit-engine/registry/policies/settings.js +4 -2
  19. package/lib/libs/audit-engine/registry/policies/settings.js.map +1 -1
  20. package/lib/libs/audit-engine/registry/policies/users.js +3 -3
  21. package/lib/libs/audit-engine/registry/policies/users.js.map +1 -1
  22. package/lib/libs/audit-engine/registry/policy.d.ts +9 -1
  23. package/lib/libs/audit-engine/registry/policy.js +5 -0
  24. package/lib/libs/audit-engine/registry/policy.js.map +1 -1
  25. package/lib/libs/audit-engine/registry/roles/roleManager.d.ts +7 -1
  26. package/lib/libs/audit-engine/registry/roles/roleManager.js +12 -0
  27. package/lib/libs/audit-engine/registry/roles/roleManager.js.map +1 -1
  28. package/lib/libs/audit-engine/registry/roles/userRole.d.ts +24 -1
  29. package/lib/libs/audit-engine/registry/roles/userRole.js +53 -5
  30. package/lib/libs/audit-engine/registry/roles/userRole.js.map +1 -1
  31. package/lib/libs/audit-engine/registry/ruleRegistry.js +7 -1
  32. package/lib/libs/audit-engine/registry/ruleRegistry.js.map +1 -1
  33. package/lib/libs/audit-engine/registry/rules/enforceObjectAccessOnUser.d.ts +0 -1
  34. package/lib/libs/audit-engine/registry/rules/enforceObjectAccessOnUser.js +1 -7
  35. package/lib/libs/audit-engine/registry/rules/enforceObjectAccessOnUser.js.map +1 -1
  36. package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.d.ts +0 -1
  37. package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js +3 -9
  38. package/lib/libs/audit-engine/registry/rules/enforcePermissionPresets.js.map +1 -1
  39. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.d.ts +0 -1
  40. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js +1 -7
  41. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnProfileLike.js.map +1 -1
  42. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.d.ts +0 -1
  43. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js +1 -7
  44. package/lib/libs/audit-engine/registry/rules/enforcePermissionsOnUser.js.map +1 -1
  45. package/lib/libs/audit-engine/registry/rules/policyRule.d.ts +2 -0
  46. package/lib/libs/audit-engine/registry/rules/policyRule.js.map +1 -1
  47. package/lib/libs/audit-engine/registry/rules/privateExternalAccessForAllObjects.d.ts +7 -0
  48. package/lib/libs/audit-engine/registry/rules/privateExternalAccessForAllObjects.js +34 -0
  49. package/lib/libs/audit-engine/registry/rules/privateExternalAccessForAllObjects.js.map +1 -0
  50. package/lib/libs/audit-engine/registry/shape/auditConfigShape.d.ts +21 -0
  51. package/lib/libs/audit-engine/registry/shape/auditConfigShape.js +7 -1
  52. package/lib/libs/audit-engine/registry/shape/auditConfigShape.js.map +1 -1
  53. package/lib/libs/audit-engine/registry/shape/shapeValidation.d.ts +2 -2
  54. package/lib/libs/audit-engine/registry/shape/shapeValidation.js +36 -21
  55. package/lib/libs/audit-engine/registry/shape/shapeValidation.js.map +1 -1
  56. package/lib/salesforce/connection.d.ts +13 -0
  57. package/lib/salesforce/connection.js +35 -1
  58. package/lib/salesforce/connection.js.map +1 -1
  59. package/lib/salesforce/describes/orgDescribe.d.ts +10 -1
  60. package/lib/salesforce/describes/orgDescribe.js +38 -2
  61. package/lib/salesforce/describes/orgDescribe.js.map +1 -1
  62. package/lib/salesforce/describes/orgDescribe.types.d.ts +21 -2
  63. package/lib/salesforce/index.d.ts +2 -0
  64. package/lib/salesforce/index.js +1 -0
  65. package/lib/salesforce/index.js.map +1 -1
  66. package/lib/salesforce/mdapi/constants.d.ts +1 -0
  67. package/lib/salesforce/mdapi/constants.js +2 -1
  68. package/lib/salesforce/mdapi/constants.js.map +1 -1
  69. package/lib/salesforce/repositories/connected-apps/connected-apps.d.ts +6 -1
  70. package/lib/salesforce/repositories/connected-apps/connected-apps.js.map +1 -1
  71. package/lib/salesforce/repositories/object-definitions/object-definitions.d.ts +17 -0
  72. package/lib/salesforce/repositories/object-definitions/object-definitions.js +94 -0
  73. package/lib/salesforce/repositories/object-definitions/object-definitions.js.map +1 -0
  74. package/lib/salesforce/repositories/object-definitions/object-definitions.types.d.ts +60 -0
  75. package/lib/salesforce/repositories/object-definitions/object-definitions.types.js +9 -0
  76. package/lib/salesforce/repositories/object-definitions/object-definitions.types.js.map +1 -0
  77. package/lib/salesforce/repositories/perm-sets/permission-sets.d.ts +6 -1
  78. package/lib/salesforce/repositories/perm-sets/permission-sets.js.map +1 -1
  79. package/lib/salesforce/resolve-entity-lifecycle-bus.d.ts +3 -1
  80. package/lib/salesforce/resolve-entity-lifecycle-bus.js.map +1 -1
  81. package/messages/auditShapeValidation.md +4 -0
  82. package/messages/rules.enforceClassificationPresets.md +1 -1
  83. package/messages/rules.objects.md +3 -0
  84. package/oclif.lock +1056 -1703
  85. package/oclif.manifest.json +1 -1
  86. package/package.json +22 -22
@@ -1,5 +1,4 @@
1
1
  import { Messages } from '@salesforce/core';
2
- import { isPermissionControl } from './schema.js';
3
2
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
4
3
  const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'auditShapeValidation');
5
4
  export const validator = (parseResult) => {
@@ -31,35 +30,51 @@ export const validator = (parseResult) => {
31
30
  }
32
31
  return errors;
33
32
  };
34
- export function verifyRoleDefinitions(roles, orgDescribe) {
33
+ export async function verifyRoleDefinitions(roles, orgDescribe) {
35
34
  const warnings = new Array();
35
+ const objectNames = [];
36
36
  for (const [roleName, roleDef] of Object.entries(roles)) {
37
- if (!isPermissionControl(roleDef.permissions) || !roleDef.permissions) {
38
- continue;
37
+ if (roleDef.objectAccess) {
38
+ objectNames.push(...Object.keys(roleDef.objectAccess));
39
39
  }
40
- for (const permissionBlockName of [
41
- { listName: 'userPermissions', isValid: (permName) => orgDescribe.isValid(permName) },
42
- { listName: 'customPermissions', isValid: (permName) => orgDescribe.isValidCustomPerm(permName) },
43
- ]) {
44
- const permBlock = roleDef.permissions[permissionBlockName.listName];
45
- if (!permBlock) {
46
- continue;
47
- }
48
- for (const permProp of ['allowed', 'denied', 'required']) {
49
- const namedPerms = permBlock[permProp];
50
- if (namedPerms) {
51
- for (const permName of namedPerms) {
52
- if (!permissionBlockName.isValid(permName)) {
53
- warnings.push({
54
- path: ['Controls', 'Roles', roleName, permissionBlockName.listName, permProp, permName],
55
- message: messages.getMessage('PermissionDoesNotExistOnOrg'),
56
- });
40
+ if (roleDef.permissions) {
41
+ for (const permissionBlockName of [
42
+ { listName: 'userPermissions', isValid: (permName) => orgDescribe.isValid(permName) },
43
+ { listName: 'customPermissions', isValid: (permName) => orgDescribe.isValidCustomPerm(permName) },
44
+ ]) {
45
+ const permBlock = roleDef.permissions[permissionBlockName.listName];
46
+ if (!permBlock) {
47
+ continue;
48
+ }
49
+ for (const permProp of ['allowed', 'denied', 'required']) {
50
+ const namedPerms = permBlock[permProp];
51
+ if (namedPerms) {
52
+ for (const permName of namedPerms) {
53
+ if (!permissionBlockName.isValid(permName)) {
54
+ warnings.push({
55
+ path: ['Controls', 'Roles', roleName, permissionBlockName.listName, permProp, permName],
56
+ message: messages.getMessage('PermissionDoesNotExistOnOrg'),
57
+ });
58
+ }
57
59
  }
58
60
  }
59
61
  }
60
62
  }
61
63
  }
62
64
  }
65
+ const describes = await orgDescribe.describeSObjects(objectNames);
66
+ for (const [roleName, roleDef] of Object.entries(roles)) {
67
+ if (roleDef.objectAccess) {
68
+ for (const objectName of Object.keys(roleDef.objectAccess)) {
69
+ if (!describes.describes[objectName.toLowerCase()]) {
70
+ warnings.push({
71
+ path: ['Controls', 'Roles', roleName, 'objectAccess', objectName],
72
+ message: messages.getMessage('ObjectDoesNotExistOnOrg'),
73
+ });
74
+ }
75
+ }
76
+ }
77
+ }
63
78
  return warnings;
64
79
  }
65
80
  function validateRoledEntity(roles, entries, entityName) {
@@ -1 +1 @@
1
- {"version":3,"file":"shapeValidation.js","sourceRoot":"","sources":["../../../../../src/libs/audit-engine/registry/shape/shapeValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shapeValidation.js","sourceRoot":"","sources":["../../../../../src/libs/audit-engine/registry/shape/shapeValidation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { DescribeSObjectResult, QueryOptions, QueryResult, Record as JsForceRecord } from '@jsforce/jsforce-node';
2
+ import { FileProperties } from '@jsforce/jsforce-node/lib/api/metadata.js';
2
3
  import { Connection, Logger } from '@salesforce/core';
3
4
  import { ComponentSet, RetrieveResult } from '@salesforce/source-deploy-retrieve';
4
5
  /**
@@ -8,6 +9,11 @@ import { ComponentSet, RetrieveResult } from '@salesforce/source-deploy-retrieve
8
9
  export default class SfConnection {
9
10
  readonly coreConnection: Connection;
10
11
  private logger?;
12
+ /**
13
+ * Use this flag during local testing to write all
14
+ * query results to .jsc tmp dir.
15
+ */
16
+ static devMode: boolean;
11
17
  constructor(coreConnection: Connection, logger?: Logger | undefined);
12
18
  /**
13
19
  * Create new instance with default logger
@@ -40,6 +46,13 @@ export default class SfConnection {
40
46
  * @returns
41
47
  */
42
48
  retrieve(components: ComponentSet, packageName: string): Promise<RetrieveResult>;
49
+ /**
50
+ * Lists available metadata of a specific type on the target org
51
+ *
52
+ * @param type
53
+ * @returns
54
+ */
55
+ listMetadata(type: string): Promise<FileProperties[]>;
43
56
  private getLogger;
44
57
  }
45
58
  type ConnectionError = {
@@ -1,7 +1,11 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import path from 'node:path';
1
3
  import { Logger, Messages } from '@salesforce/core';
2
- import { RETRIEVE_CACHE } from './mdapi/constants.js';
4
+ import { createDigest } from '../utils.js';
5
+ import { RETRIEVE_CACHE, TMP_DIR } from './mdapi/constants.js';
3
6
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
4
7
  const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'salesforceConnectionErrors');
8
+ const DEV_MODE_WRITE_DIR = path.join(TMP_DIR, `${Date.now()}`);
5
9
  /**
6
10
  * Wrapper around the default `Connection` from core to add
7
11
  * meaningful logging and error bubbling for better UX and debugging.
@@ -9,6 +13,11 @@ const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'sa
9
13
  export default class SfConnection {
10
14
  coreConnection;
11
15
  logger;
16
+ /**
17
+ * Use this flag during local testing to write all
18
+ * query results to .jsc tmp dir.
19
+ */
20
+ static devMode = false;
12
21
  constructor(coreConnection, logger) {
13
22
  this.coreConnection = coreConnection;
14
23
  this.logger = logger;
@@ -40,6 +49,9 @@ export default class SfConnection {
40
49
  const result = isTooling
41
50
  ? await this.coreConnection.tooling.query(soql, definitiveOpts)
42
51
  : await this.coreConnection.query(soql, definitiveOpts);
52
+ if (SfConnection.devMode) {
53
+ writeFileSafe(path.join(DEV_MODE_WRITE_DIR, 'queries'), createDigest(soql, 16) + '.json', result);
54
+ }
43
55
  return result;
44
56
  }
45
57
  catch (error) {
@@ -65,6 +77,9 @@ export default class SfConnection {
65
77
  logger.debug('Describing: ' + sobjectName);
66
78
  try {
67
79
  const result = await this.coreConnection.describe(sobjectName);
80
+ if (SfConnection.devMode) {
81
+ writeFileSafe(path.join(DEV_MODE_WRITE_DIR, 'describes'), `${sobjectName}.json`, result);
82
+ }
68
83
  return result;
69
84
  }
70
85
  catch (error) {
@@ -105,6 +120,21 @@ export default class SfConnection {
105
120
  throw messages.createError('MetadataRetrieve', [details]);
106
121
  }
107
122
  }
123
+ /**
124
+ * Lists available metadata of a specific type on the target org
125
+ *
126
+ * @param type
127
+ * @returns
128
+ */
129
+ async listMetadata(type) {
130
+ const logger = await this.getLogger();
131
+ logger.debug('List available metadata on org for: ' + type);
132
+ const types = await this.coreConnection.metadata.list({ type });
133
+ if (SfConnection.devMode) {
134
+ writeFileSafe(path.join(DEV_MODE_WRITE_DIR, 'metadata-list'), `${type}.json`, types);
135
+ }
136
+ return types;
137
+ }
108
138
  async getLogger() {
109
139
  if (!this.logger) {
110
140
  this.logger = await Logger.child('jsc:sae');
@@ -127,4 +157,8 @@ function formatComponentSet(cmpSet) {
127
157
  .map(([typeName, cmps]) => `[${typeName}: ${cmps.join(',')}]`)
128
158
  .join('; ');
129
159
  }
160
+ function writeFileSafe(filePath, fileName, data) {
161
+ mkdirSync(filePath, { recursive: true });
162
+ writeFileSync(path.join(filePath, fileName), JSON.stringify(data, null, 2));
163
+ }
130
164
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/salesforce/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,oCAAoC,EAAE,4BAA4B,CAAC,CAAC;AAE3G;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACI;IAAoC;IAAvE,YAAmC,cAA0B,EAAU,MAAe;QAAnD,mBAAc,GAAd,cAAc,CAAY;QAAU,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAE1F;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAe;QACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,KAAK,CAChB,IAAY,EACZ,YAAqB,KAAK,EAC1B,YAAoC;QAEpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,mBAAmB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,YAAY,IAAI;YACrC,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS;gBACtB,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAI,IAAI,EAAE,cAAc,CAAC;gBAClE,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAI,IAAI,EAAE,cAAc,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,oEAAoE;YACpE,sEAAsE;YACtE,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC/E,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAc,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,QAAQ,CAAC,WAAmB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;YACzG,MAAM,QAAQ,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,QAAQ,CAAC,UAAwB,EAAE,WAAmB;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;gBAChD,oBAAoB,EAAE,IAAI,CAAC,cAAc;gBACzC,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,GAAG,WAAW,MAAM;gBACjC,MAAM,EAAE,cAAc;aACvB,CAAC,CAAC;YACH,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAChF,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AASD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,WAAW,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AAC/F,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/salesforce/connection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import SfConnection from '../connection.js';
2
- import { Permission } from './orgDescribe.types.js';
2
+ import { Permission, SObjectsDescribeResult } from './orgDescribe.types.js';
3
3
  export default class OrgDescribe {
4
+ private readonly con;
4
5
  /**
5
6
  * Caches initialised OrgDescribes by username.
6
7
  */
@@ -49,4 +50,12 @@ export default class OrgDescribe {
49
50
  * @returns
50
51
  */
51
52
  getCustomPermissions(): Permission[];
53
+ /**
54
+ * Sanitise and describe a list of sobject names and returns
55
+ * fully qualified sobject describes for each valid name.
56
+ *
57
+ * @param objectNames
58
+ * @returns
59
+ */
60
+ describeSObjects(objectNames: string[]): Promise<SObjectsDescribeResult>;
52
61
  }
@@ -3,13 +3,16 @@ import { CUSTOM_PERMS_QUERY } from './orgDescribe.types.js';
3
3
  /** Minimum length for perm label to start fuzzy matching */
4
4
  const FUZZY_MATCH_MIN_LENGTH = 15;
5
5
  export default class OrgDescribe {
6
+ con;
6
7
  /**
7
8
  * Caches initialised OrgDescribes by username.
8
9
  */
9
10
  static orgCache = new Map();
10
11
  customPermissions;
11
12
  userPermissions;
12
- constructor() { }
13
+ constructor(con) {
14
+ this.con = con;
15
+ }
13
16
  /**
14
17
  * Initialises a new OrgDescribe instance from an existing connection
15
18
  * and caches it for repeated access.
@@ -22,7 +25,7 @@ export default class OrgDescribe {
22
25
  if (maybeCache) {
23
26
  return maybeCache;
24
27
  }
25
- const inst = new OrgDescribe();
28
+ const inst = new OrgDescribe(con);
26
29
  inst.userPermissions = await fetchUserPermissions(con);
27
30
  inst.customPermissions = await fetchCustomPermissions(con);
28
31
  this.orgCache.set(con.coreConnection.instanceUrl, inst);
@@ -86,6 +89,36 @@ export default class OrgDescribe {
86
89
  getCustomPermissions() {
87
90
  return Array.from(this.customPermissions.values());
88
91
  }
92
+ /**
93
+ * Sanitise and describe a list of sobject names and returns
94
+ * fully qualified sobject describes for each valid name.
95
+ *
96
+ * @param objectNames
97
+ * @returns
98
+ */
99
+ async describeSObjects(objectNames) {
100
+ const result = { successes: [], errors: [], describes: {} };
101
+ const normalisedNames = normalise(objectNames);
102
+ const describePromises = normalisedNames.map((uniqueObjectName) => this.con.describe(uniqueObjectName));
103
+ const describes = await Promise.allSettled(describePromises);
104
+ for (const settledPromise of describes) {
105
+ if (settledPromise.status === 'fulfilled') {
106
+ result.successes.push(settledPromise.value.name);
107
+ result.describes[settledPromise.value.name.toLowerCase()] = settledPromise.value;
108
+ }
109
+ else {
110
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
111
+ const { reason } = settledPromise;
112
+ const name = normalisedNames[describes.indexOf(settledPromise)];
113
+ const reasonMessage = hasMessage(reason) ? reason.message : 'Failed to resolve with unknown error';
114
+ result.errors.push({ name, reason: reasonMessage });
115
+ }
116
+ }
117
+ return result;
118
+ }
119
+ }
120
+ function hasMessage(obj) {
121
+ return typeof obj === 'object' && obj !== null && 'message' in obj;
89
122
  }
90
123
  async function fetchUserPermissions(con) {
91
124
  const describePerms = await parsePermsFromDescribe(con);
@@ -108,6 +141,9 @@ async function fetchCustomPermissions(con) {
108
141
  function mergeMaps(...permMaps) {
109
142
  return new Map(permMaps.flatMap((m) => [...m]));
110
143
  }
144
+ function normalise(anyStrings) {
145
+ return Array.from(new Set(anyStrings.map((inputString) => inputString.toLowerCase())));
146
+ }
111
147
  async function parsePermsFromDescribe(con) {
112
148
  const permSet = await con.describe('PermissionSet');
113
149
  const describeAvailablePerms = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"orgDescribe.js","sourceRoot":"","sources":["../../../src/salesforce/describes/orgDescribe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orgDescribe.js","sourceRoot":"","sources":["../../../src/salesforce/describes/orgDescribe.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,30 @@
1
- import { Record } from '@jsforce/jsforce-node';
1
+ import { DescribeSObjectResult, Record as SfRecord } from '@jsforce/jsforce-node';
2
2
  export declare const CUSTOM_PERMS_QUERY = "SELECT Id,MasterLabel,DeveloperName FROM CustomPermission";
3
3
  export type Permission = {
4
4
  name: string;
5
5
  label?: string;
6
6
  };
7
- export type SfCustomPermission = Record & {
7
+ export type SfCustomPermission = SfRecord & {
8
8
  Id: string;
9
9
  MasterLabel: string;
10
10
  DeveloperName: string;
11
11
  };
12
+ export type SObjectsDescribeResult = {
13
+ /**
14
+ * Sanitised list of valid sobject names
15
+ */
16
+ successes: string[];
17
+ /**
18
+ * Map of lowercase sobject names and corresponding
19
+ * describe results.
20
+ */
21
+ describes: Record<string, DescribeSObjectResult>;
22
+ /**
23
+ * List of sobject names that do not exist on the target
24
+ * org with a reason of failure.
25
+ */
26
+ errors: Array<{
27
+ name: string;
28
+ reason: string;
29
+ }>;
30
+ };
@@ -2,11 +2,13 @@ export { default as Users } from './repositories/users/users.js';
2
2
  export { default as Profiles } from './repositories/profiles/profiles.js';
3
3
  export { default as ConnectedApps } from './repositories/connected-apps/connected-apps.js';
4
4
  export { default as PermissionSets } from './repositories/perm-sets/permission-sets.js';
5
+ export { default as Objects } from './repositories/object-definitions/object-definitions.js';
5
6
  export { default as OrgDescribe } from './describes/orgDescribe.js';
6
7
  export type { User, ResolveUsersOptions } from './repositories/users/user.types.js';
7
8
  export type { Profile } from './repositories/profiles/profile.types.js';
8
9
  export type { ConnectedApp } from './repositories/connected-apps/connected-app.types.js';
9
10
  export type { PermissionSet } from './repositories/perm-sets/perm-sets.types.js';
11
+ export type { ObjectDefinition } from './repositories/object-definitions/object-definitions.types.js';
10
12
  export { ResolveLifecycle } from './resolve-entity-lifecycle-bus.js';
11
13
  export type { MessageEvent } from './resolve-entity-lifecycle-bus.js';
12
14
  export { default as MDAPI } from './mdapi/mdapi.js';
@@ -3,6 +3,7 @@ export { default as Users } from './repositories/users/users.js';
3
3
  export { default as Profiles } from './repositories/profiles/profiles.js';
4
4
  export { default as ConnectedApps } from './repositories/connected-apps/connected-apps.js';
5
5
  export { default as PermissionSets } from './repositories/perm-sets/permission-sets.js';
6
+ export { default as Objects } from './repositories/object-definitions/object-definitions.js';
6
7
  export { default as OrgDescribe } from './describes/orgDescribe.js';
7
8
  // RESOLVE EVENT BUS
8
9
  export { ResolveLifecycle } from './resolve-entity-lifecycle-bus.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/salesforce/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQpE,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/salesforce/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yDAAyD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AASpE,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1,2 @@
1
+ export declare const TMP_DIR = ".jsc";
1
2
  export declare const RETRIEVE_CACHE: string;
@@ -1,3 +1,4 @@
1
1
  import path from 'node:path';
2
- export const RETRIEVE_CACHE = path.join('.jsc', 'retrieves');
2
+ export const TMP_DIR = '.jsc';
3
+ export const RETRIEVE_CACHE = path.join(TMP_DIR, 'retrieves');
3
4
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/salesforce/mdapi/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import EventEmitter from 'node:events';
2
2
  import SfConnection from '../../connection.js';
3
3
  import { ConnectedApp, ResolveAppsOptions } from './connected-app.types.js';
4
- export default class ConnectedApps extends EventEmitter {
4
+ export default class ConnectedApps extends EventEmitter<{
5
+ entityresolve: [{
6
+ total: number;
7
+ resolved: number;
8
+ }];
9
+ }> {
5
10
  private readonly con;
6
11
  private readonly mdapi;
7
12
  private readonly oauthTokenRepo;
@@ -1 +1 @@
1
- {"version":3,"file":"connected-apps.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/connected-apps/connected-apps.ts"],"names":[],"mappings":"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"}
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,17 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import SfConnection from '../../connection.js';
3
+ import { ObjectDefinition } from './object-definitions.types.js';
4
+ export default class ObjectDefinitions extends EventEmitter<{
5
+ entityresolve: [{
6
+ total: number;
7
+ resolved: number;
8
+ }];
9
+ }> {
10
+ private readonly con;
11
+ constructor(con: SfConnection);
12
+ resolve(): Promise<Map<string, ObjectDefinition>>;
13
+ private fetchCustomObjects;
14
+ private fetchSharingRules;
15
+ private fetchEntityDefinitions;
16
+ private fetchToolingCustomObjects;
17
+ }
@@ -0,0 +1,94 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { CUSTOM_OBJECT_BASE_QUERY, formatEntityDefinitionQuery, } from './object-definitions.types.js';
3
+ export default class ObjectDefinitions extends EventEmitter {
4
+ con;
5
+ constructor(con) {
6
+ super();
7
+ this.con = con;
8
+ }
9
+ async resolve() {
10
+ this.emit('entityresolve', { total: 0, resolved: 0 });
11
+ const results = new Map();
12
+ const customObjects = await this.fetchCustomObjects();
13
+ this.emit('entityresolve', { total: Object.keys(customObjects).length, resolved: 0 });
14
+ const sharingRules = await this.fetchSharingRules();
15
+ const objectNames = Array.from(new Set([...Object.keys(customObjects), ...Object.keys(sharingRules)])).sort();
16
+ const entityDefs = await this.fetchEntityDefinitions(objectNames);
17
+ const toolingCustomObjs = await this.fetchToolingCustomObjects();
18
+ for (const objectName of objectNames) {
19
+ results.set(objectName, buildObjectDefinition(objectName, Boolean(sharingRules[objectName]), toolingCustomObjs[entityDefs[objectName]?.DurableId], entityDefs[objectName], customObjects[objectName]));
20
+ }
21
+ this.emit('entityresolve', {
22
+ total: Object.keys(customObjects).length,
23
+ resolved: Object.keys(customObjects).length,
24
+ });
25
+ return results;
26
+ }
27
+ async fetchCustomObjects() {
28
+ const customObjects = await this.con.listMetadata('CustomObject');
29
+ const r = {};
30
+ for (const obj of customObjects) {
31
+ r[obj.fullName] = obj;
32
+ }
33
+ return r;
34
+ }
35
+ async fetchSharingRules() {
36
+ const sharingRules = await this.con.listMetadata('SharingRules');
37
+ const r = {};
38
+ for (const obj of sharingRules) {
39
+ r[obj.fullName] = obj;
40
+ }
41
+ return r;
42
+ }
43
+ async fetchEntityDefinitions(objectNames) {
44
+ const queryResult = await this.con.query(formatEntityDefinitionQuery(objectNames), true);
45
+ const result = {};
46
+ for (const entityDef of queryResult.records) {
47
+ result[entityDef.QualifiedApiName] = entityDef;
48
+ }
49
+ return result;
50
+ }
51
+ async fetchToolingCustomObjects() {
52
+ const queryResult = await this.con.query(CUSTOM_OBJECT_BASE_QUERY, true);
53
+ const result = {};
54
+ for (const def of queryResult.records) {
55
+ // Custom Objects return their Id with case-insensitive 18-char id, but the
56
+ // "DurableId" that we use from entity definition is 15-char case-sensitive.
57
+ // #make-it-make-sense
58
+ result[def.Id.substring(0, 15)] = def;
59
+ }
60
+ return result;
61
+ }
62
+ }
63
+ function evalObjectType(entityDef) {
64
+ if (entityDef) {
65
+ return entityDef.IsCustomSetting
66
+ ? 'CustomSetting'
67
+ : entityDef.QualifiedApiName.endsWith('__mdt')
68
+ ? 'CustomMetadata'
69
+ : entityDef.QualifiedApiName.endsWith('__e')
70
+ ? 'PlatformEvent'
71
+ : entityDef.QualifiedApiName.endsWith('__kav')
72
+ ? 'KnowledgeArticle'
73
+ : 'SObject';
74
+ }
75
+ else {
76
+ return 'Unknown';
77
+ }
78
+ }
79
+ function buildObjectDefinition(developerName, isSharingControllable, toolingObj, entityDef, customObjectMetadata) {
80
+ return {
81
+ customObjectId: toolingObj?.Id,
82
+ developerName,
83
+ isSharingControllable,
84
+ label: entityDef?.MasterLabel,
85
+ externalSharing: entityDef?.ExternalSharingModel ?? 'Unknown',
86
+ internalSharing: entityDef?.InternalSharingModel ?? 'Unknown',
87
+ sharingModel: toolingObj?.SharingModel ?? 'Unknown',
88
+ isCustom: Boolean(toolingObj),
89
+ type: evalObjectType(entityDef),
90
+ hasEntityDefinition: Boolean(entityDef),
91
+ hasCustomObjectMetadata: Boolean(customObjectMetadata),
92
+ };
93
+ }
94
+ //# sourceMappingURL=object-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-definitions.js","sourceRoot":"","sources":["../../../../src/salesforce/repositories/object-definitions/object-definitions.ts"],"names":[],"mappings":"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"}