@peernova/cuneiform-sf 1.0.2 → 1.0.4-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +81 -30
- package/README.md +59 -95
- package/lib/adapters/connection-facade.d.ts +458 -0
- package/lib/adapters/connection-facade.js +379 -0
- package/lib/adapters/connection-facade.js.map +1 -0
- package/lib/adapters/errors.d.ts +547 -0
- package/lib/adapters/errors.js +937 -0
- package/lib/adapters/errors.js.map +1 -0
- package/lib/adapters/index.d.ts +33 -0
- package/lib/adapters/index.js +50 -0
- package/lib/adapters/index.js.map +1 -0
- package/lib/adapters/lifecycle.d.ts +119 -0
- package/lib/adapters/lifecycle.js +94 -0
- package/lib/adapters/lifecycle.js.map +1 -0
- package/lib/adapters/rest/cache.d.ts +69 -0
- package/lib/adapters/rest/cache.js +133 -0
- package/lib/adapters/rest/cache.js.map +1 -0
- package/lib/adapters/rest/index.d.ts +11 -0
- package/lib/adapters/rest/index.js +18 -0
- package/lib/adapters/rest/index.js.map +1 -0
- package/lib/adapters/rest/profiling-rest-client.d.ts +137 -0
- package/lib/adapters/rest/profiling-rest-client.js +115 -0
- package/lib/adapters/rest/profiling-rest-client.js.map +1 -0
- package/lib/adapters/rest/rest-api-adapter.d.ts +389 -0
- package/lib/adapters/rest/rest-api-adapter.js +747 -0
- package/lib/adapters/rest/rest-api-adapter.js.map +1 -0
- package/lib/adapters/rest/types.d.ts +34 -0
- package/lib/adapters/rest/types.js +9 -0
- package/lib/adapters/rest/types.js.map +1 -0
- package/lib/adapters/retry.d.ts +91 -0
- package/lib/adapters/retry.js +215 -0
- package/lib/adapters/retry.js.map +1 -0
- package/lib/adapters/soql/cuneiform-query-builder.d.ts +391 -0
- package/lib/adapters/soql/cuneiform-query-builder.js +559 -0
- package/lib/adapters/soql/cuneiform-query-builder.js.map +1 -0
- package/lib/adapters/soql/index.d.ts +13 -0
- package/lib/adapters/soql/index.js +21 -0
- package/lib/adapters/soql/index.js.map +1 -0
- package/lib/adapters/soql/soql-query-adapter.d.ts +141 -0
- package/lib/adapters/soql/soql-query-adapter.js +259 -0
- package/lib/adapters/soql/soql-query-adapter.js.map +1 -0
- package/lib/adapters/soql/types.d.ts +37 -0
- package/lib/adapters/soql/types.js +19 -0
- package/lib/adapters/soql/types.js.map +1 -0
- package/lib/adapters/testing/index.d.ts +37 -0
- package/lib/adapters/testing/index.js +20 -0
- package/lib/adapters/testing/index.js.map +1 -0
- package/lib/adapters/testing/mock-connection.d.ts +77 -0
- package/lib/adapters/testing/mock-connection.js +207 -0
- package/lib/adapters/testing/mock-connection.js.map +1 -0
- package/lib/adapters/testing/mock-logger.d.ts +29 -0
- package/lib/adapters/testing/mock-logger.js +57 -0
- package/lib/adapters/testing/mock-logger.js.map +1 -0
- package/lib/adapters/testing/mock-mcp-adapters.d.ts +32 -0
- package/lib/adapters/testing/mock-mcp-adapters.js +52 -0
- package/lib/adapters/testing/mock-mcp-adapters.js.map +1 -0
- package/lib/adapters/testing/mock-oclif-config.d.ts +22 -0
- package/lib/adapters/testing/mock-oclif-config.js +90 -0
- package/lib/adapters/testing/mock-oclif-config.js.map +1 -0
- package/lib/adapters/testing/mock-rest-adapter.d.ts +26 -0
- package/lib/adapters/testing/mock-rest-adapter.js +243 -0
- package/lib/adapters/testing/mock-rest-adapter.js.map +1 -0
- package/lib/adapters/testing/mock-salesforce-connection.d.ts +40 -0
- package/lib/adapters/testing/mock-salesforce-connection.js +61 -0
- package/lib/adapters/testing/mock-salesforce-connection.js.map +1 -0
- package/lib/adapters/testing/mock-soql-adapter.d.ts +30 -0
- package/lib/adapters/testing/mock-soql-adapter.js +120 -0
- package/lib/adapters/testing/mock-soql-adapter.js.map +1 -0
- package/lib/adapters/testing/mock-tooling-adapter.d.ts +24 -0
- package/lib/adapters/testing/mock-tooling-adapter.js +163 -0
- package/lib/adapters/testing/mock-tooling-adapter.js.map +1 -0
- package/lib/adapters/testing/stub-connection.d.ts +93 -0
- package/lib/adapters/testing/stub-connection.js +97 -0
- package/lib/adapters/testing/stub-connection.js.map +1 -0
- package/lib/adapters/testing/stub-rest-adapter.d.ts +52 -0
- package/lib/adapters/testing/stub-rest-adapter.js +58 -0
- package/lib/adapters/testing/stub-rest-adapter.js.map +1 -0
- package/lib/adapters/testing/stub-soql-adapter.d.ts +56 -0
- package/lib/adapters/testing/stub-soql-adapter.js +50 -0
- package/lib/adapters/testing/stub-soql-adapter.js.map +1 -0
- package/lib/adapters/testing/types.d.ts +71 -0
- package/lib/adapters/testing/types.js +9 -0
- package/lib/adapters/testing/types.js.map +1 -0
- package/lib/adapters/tooling/index.d.ts +10 -0
- package/lib/adapters/tooling/index.js +17 -0
- package/lib/adapters/tooling/index.js.map +1 -0
- package/lib/adapters/tooling/tooling-api-adapter.d.ts +157 -0
- package/lib/adapters/tooling/tooling-api-adapter.js +339 -0
- package/lib/adapters/tooling/tooling-api-adapter.js.map +1 -0
- package/lib/adapters/tooling/types.d.ts +81 -0
- package/lib/adapters/tooling/types.js +9 -0
- package/lib/adapters/tooling/types.js.map +1 -0
- package/lib/adapters/types.d.ts +112 -0
- package/lib/adapters/types.js +169 -0
- package/lib/adapters/types.js.map +1 -0
- package/lib/base/cuneiform-command.d.ts +152 -0
- package/lib/base/cuneiform-command.js +243 -0
- package/lib/base/cuneiform-command.js.map +1 -0
- package/lib/commands/cuneiform/compatibility/check.d.ts +43 -0
- package/lib/commands/cuneiform/compatibility/check.js +114 -0
- package/lib/commands/cuneiform/compatibility/check.js.map +1 -0
- package/lib/commands/cuneiform/definition/create.d.ts +119 -0
- package/lib/commands/cuneiform/definition/create.js +693 -0
- package/lib/commands/cuneiform/definition/create.js.map +1 -0
- package/lib/commands/cuneiform/definition/export.d.ts +57 -0
- package/lib/commands/cuneiform/definition/export.js +133 -0
- package/lib/commands/cuneiform/definition/export.js.map +1 -0
- package/lib/commands/cuneiform/definition/get.d.ts +86 -0
- package/lib/commands/cuneiform/definition/get.js +270 -0
- package/lib/commands/cuneiform/definition/get.js.map +1 -0
- package/lib/commands/cuneiform/definition/import.d.ts +54 -0
- package/lib/commands/cuneiform/definition/import.js +118 -0
- package/lib/commands/cuneiform/definition/import.js.map +1 -0
- package/lib/commands/cuneiform/definition/list.d.ts +110 -0
- package/lib/commands/cuneiform/definition/list.js +344 -0
- package/lib/commands/cuneiform/definition/list.js.map +1 -0
- package/lib/commands/cuneiform/definition/purge.d.ts +105 -0
- package/lib/commands/cuneiform/definition/purge.js +533 -0
- package/lib/commands/cuneiform/definition/purge.js.map +1 -0
- package/lib/commands/cuneiform/definition/update.d.ts +58 -0
- package/lib/commands/cuneiform/definition/update.js +206 -0
- package/lib/commands/cuneiform/definition/update.js.map +1 -0
- package/lib/commands/cuneiform/mcp/serve.d.ts +56 -0
- package/lib/commands/cuneiform/mcp/serve.js +109 -0
- package/lib/commands/cuneiform/mcp/serve.js.map +1 -0
- package/lib/commands/cuneiform/object/describe.d.ts +61 -0
- package/lib/commands/cuneiform/object/describe.js +461 -0
- package/lib/commands/cuneiform/object/describe.js.map +1 -0
- package/lib/commands/cuneiform/object/list.d.ts +111 -0
- package/lib/commands/cuneiform/object/list.js +239 -0
- package/lib/commands/cuneiform/object/list.js.map +1 -0
- package/lib/commands/cuneiform/org/details.d.ts +99 -0
- package/lib/commands/cuneiform/org/details.js +521 -0
- package/lib/commands/cuneiform/org/details.js.map +1 -0
- package/lib/commands/cuneiform/org/reset.d.ts +46 -0
- package/lib/commands/cuneiform/org/reset.js +135 -0
- package/lib/commands/cuneiform/org/reset.js.map +1 -0
- package/lib/commands/cuneiform/profile/request/cancel.d.ts +59 -0
- package/lib/commands/cuneiform/profile/request/cancel.js +202 -0
- package/lib/commands/cuneiform/profile/request/cancel.js.map +1 -0
- package/lib/commands/cuneiform/profile/request/delete.d.ts +59 -0
- package/lib/commands/cuneiform/profile/request/delete.js +223 -0
- package/lib/commands/cuneiform/profile/request/delete.js.map +1 -0
- package/lib/commands/cuneiform/profile/request/list.d.ts +35 -0
- package/lib/commands/cuneiform/profile/request/list.js +102 -0
- package/lib/commands/cuneiform/profile/request/list.js.map +1 -0
- package/lib/commands/cuneiform/profile.d.ts +90 -0
- package/lib/commands/cuneiform/profile.js +322 -0
- package/lib/commands/cuneiform/profile.js.map +1 -0
- package/lib/commands/cuneiform/summary/purge.d.ts +77 -0
- package/lib/commands/cuneiform/summary/purge.js +429 -0
- package/lib/commands/cuneiform/summary/purge.js.map +1 -0
- package/lib/commands/cuneiform/summary/reprofile.d.ts +60 -0
- package/lib/commands/cuneiform/summary/reprofile.js +236 -0
- package/lib/commands/cuneiform/summary/reprofile.js.map +1 -0
- package/lib/commands/cuneiform/summary/stop.d.ts +59 -0
- package/lib/commands/cuneiform/summary/stop.js +234 -0
- package/lib/commands/cuneiform/summary/stop.js.map +1 -0
- package/lib/commands/cuneiform/user/details.d.ts +73 -0
- package/lib/commands/cuneiform/user/details.js +391 -0
- package/lib/commands/cuneiform/user/details.js.map +1 -0
- package/lib/constants/index.d.ts +8 -0
- package/lib/constants/index.js +16 -0
- package/lib/constants/index.js.map +1 -0
- package/lib/constants/namespace-constants.d.ts +91 -0
- package/lib/constants/namespace-constants.js +211 -0
- package/lib/constants/namespace-constants.js.map +1 -0
- package/lib/debug/command-debug-proxy.d.ts +101 -0
- package/lib/debug/command-debug-proxy.js +171 -0
- package/lib/debug/command-debug-proxy.js.map +1 -0
- package/lib/debug/debug-logger.d.ts +85 -0
- package/lib/debug/debug-logger.js +133 -0
- package/lib/debug/debug-logger.js.map +1 -0
- package/lib/debug/index.d.ts +12 -0
- package/lib/debug/index.js +20 -0
- package/lib/debug/index.js.map +1 -0
- package/lib/debug/service-debug-proxy.d.ts +30 -0
- package/lib/debug/service-debug-proxy.js +102 -0
- package/lib/debug/service-debug-proxy.js.map +1 -0
- package/lib/hooks/prerun.d.ts +25 -0
- package/lib/hooks/prerun.js +47 -0
- package/lib/hooks/prerun.js.map +1 -0
- package/lib/mcp/config/mcp-config.d.ts +55 -0
- package/lib/mcp/config/mcp-config.js +51 -0
- package/lib/mcp/config/mcp-config.js.map +1 -0
- package/lib/mcp/config/pagination.d.ts +96 -0
- package/lib/mcp/config/pagination.js +108 -0
- package/lib/mcp/config/pagination.js.map +1 -0
- package/lib/mcp/config/system-prompts.d.ts +18 -0
- package/lib/mcp/config/system-prompts.js +92 -0
- package/lib/mcp/config/system-prompts.js.map +1 -0
- package/lib/mcp/errors.d.ts +23 -0
- package/lib/mcp/errors.js +27 -0
- package/lib/mcp/errors.js.map +1 -0
- package/lib/mcp/schemas/input-schemas.d.ts +327 -0
- package/lib/mcp/schemas/input-schemas.js +302 -0
- package/lib/mcp/schemas/input-schemas.js.map +1 -0
- package/lib/mcp/server.d.ts +40 -0
- package/lib/mcp/server.js +316 -0
- package/lib/mcp/server.js.map +1 -0
- package/lib/mcp/tools/contactpoint-tools.d.ts +14 -0
- package/lib/mcp/tools/contactpoint-tools.js +34 -0
- package/lib/mcp/tools/contactpoint-tools.js.map +1 -0
- package/lib/mcp/tools/definition-io-tools.d.ts +19 -0
- package/lib/mcp/tools/definition-io-tools.js +152 -0
- package/lib/mcp/tools/definition-io-tools.js.map +1 -0
- package/lib/mcp/tools/definition-tools.d.ts +51 -0
- package/lib/mcp/tools/definition-tools.js +199 -0
- package/lib/mcp/tools/definition-tools.js.map +1 -0
- package/lib/mcp/tools/index.d.ts +37 -0
- package/lib/mcp/tools/index.js +88 -0
- package/lib/mcp/tools/index.js.map +1 -0
- package/lib/mcp/tools/object-tools.d.ts +22 -0
- package/lib/mcp/tools/object-tools.js +306 -0
- package/lib/mcp/tools/object-tools.js.map +1 -0
- package/lib/mcp/tools/org-tools.d.ts +14 -0
- package/lib/mcp/tools/org-tools.js +177 -0
- package/lib/mcp/tools/org-tools.js.map +1 -0
- package/lib/mcp/tools/profile-tools.d.ts +59 -0
- package/lib/mcp/tools/profile-tools.js +213 -0
- package/lib/mcp/tools/profile-tools.js.map +1 -0
- package/lib/mcp/tools/summary-tools.d.ts +14 -0
- package/lib/mcp/tools/summary-tools.js +38 -0
- package/lib/mcp/tools/summary-tools.js.map +1 -0
- package/lib/mcp/tools/tool-factory.d.ts +63 -0
- package/lib/mcp/tools/tool-factory.js +146 -0
- package/lib/mcp/tools/tool-factory.js.map +1 -0
- package/lib/mcp/tools/user-tools.d.ts +25 -0
- package/lib/mcp/tools/user-tools.js +167 -0
- package/lib/mcp/tools/user-tools.js.map +1 -0
- package/lib/models/date-literal.d.ts +211 -0
- package/lib/models/date-literal.js +615 -0
- package/lib/models/date-literal.js.map +1 -0
- package/lib/models/object-describe-types.d.ts +173 -0
- package/lib/models/object-describe-types.js +9 -0
- package/lib/models/object-describe-types.js.map +1 -0
- package/lib/models/profile-request-types.d.ts +118 -0
- package/lib/models/profile-request-types.js +23 -0
- package/lib/models/profile-request-types.js.map +1 -0
- package/lib/models/profiling-execution-types.d.ts +154 -0
- package/lib/models/profiling-execution-types.js +14 -0
- package/lib/models/profiling-execution-types.js.map +1 -0
- package/lib/models/service-result.d.ts +114 -0
- package/lib/models/service-result.js +81 -0
- package/lib/models/service-result.js.map +1 -0
- package/lib/models/sfdmu-types.d.ts +53 -0
- package/lib/models/sfdmu-types.js +23 -0
- package/lib/models/sfdmu-types.js.map +1 -0
- package/lib/models/status-types.d.ts +38 -0
- package/lib/models/status-types.js +12 -0
- package/lib/models/status-types.js.map +1 -0
- package/lib/models/summary-bulk-types.d.ts +61 -0
- package/lib/models/summary-bulk-types.js +23 -0
- package/lib/models/summary-bulk-types.js.map +1 -0
- package/lib/models/user-details-types.d.ts +163 -0
- package/lib/models/user-details-types.js +9 -0
- package/lib/models/user-details-types.js.map +1 -0
- package/lib/models/year-range.d.ts +78 -0
- package/lib/models/year-range.js +153 -0
- package/lib/models/year-range.js.map +1 -0
- package/lib/operations/CompatibilityCheckOperation.d.ts +62 -0
- package/lib/operations/CompatibilityCheckOperation.js +102 -0
- package/lib/operations/CompatibilityCheckOperation.js.map +1 -0
- package/lib/operations/DefinitionCreateOperation.d.ts +411 -0
- package/lib/operations/DefinitionCreateOperation.js +1121 -0
- package/lib/operations/DefinitionCreateOperation.js.map +1 -0
- package/lib/operations/DefinitionExportOperation.d.ts +155 -0
- package/lib/operations/DefinitionExportOperation.js +281 -0
- package/lib/operations/DefinitionExportOperation.js.map +1 -0
- package/lib/operations/DefinitionImportOperation.d.ts +144 -0
- package/lib/operations/DefinitionImportOperation.js +357 -0
- package/lib/operations/DefinitionImportOperation.js.map +1 -0
- package/lib/operations/DefinitionListOperation.d.ts +66 -0
- package/lib/operations/DefinitionListOperation.js +108 -0
- package/lib/operations/DefinitionListOperation.js.map +1 -0
- package/lib/operations/DefinitionPurgeOperation.d.ts +199 -0
- package/lib/operations/DefinitionPurgeOperation.js +465 -0
- package/lib/operations/DefinitionPurgeOperation.js.map +1 -0
- package/lib/operations/DefinitionUpdateOperation.d.ts +78 -0
- package/lib/operations/DefinitionUpdateOperation.js +142 -0
- package/lib/operations/DefinitionUpdateOperation.js.map +1 -0
- package/lib/operations/OrgDetailsOperation.d.ts +253 -0
- package/lib/operations/OrgDetailsOperation.js +456 -0
- package/lib/operations/OrgDetailsOperation.js.map +1 -0
- package/lib/operations/OrgResetOperation.d.ts +114 -0
- package/lib/operations/OrgResetOperation.js +209 -0
- package/lib/operations/OrgResetOperation.js.map +1 -0
- package/lib/operations/ProfileOperation.d.ts +187 -0
- package/lib/operations/ProfileOperation.js +373 -0
- package/lib/operations/ProfileOperation.js.map +1 -0
- package/lib/operations/ProfileRequestCancelOperation.d.ts +59 -0
- package/lib/operations/ProfileRequestCancelOperation.js +137 -0
- package/lib/operations/ProfileRequestCancelOperation.js.map +1 -0
- package/lib/operations/ProfileRequestDeleteOperation.d.ts +64 -0
- package/lib/operations/ProfileRequestDeleteOperation.js +134 -0
- package/lib/operations/ProfileRequestDeleteOperation.js.map +1 -0
- package/lib/operations/ProfileRequestListOperation.d.ts +39 -0
- package/lib/operations/ProfileRequestListOperation.js +61 -0
- package/lib/operations/ProfileRequestListOperation.js.map +1 -0
- package/lib/operations/SummaryPurgeOperation.d.ts +134 -0
- package/lib/operations/SummaryPurgeOperation.js +257 -0
- package/lib/operations/SummaryPurgeOperation.js.map +1 -0
- package/lib/operations/SummaryReprofileOperation.d.ts +88 -0
- package/lib/operations/SummaryReprofileOperation.js +174 -0
- package/lib/operations/SummaryReprofileOperation.js.map +1 -0
- package/lib/operations/SummaryStopOperation.d.ts +87 -0
- package/lib/operations/SummaryStopOperation.js +175 -0
- package/lib/operations/SummaryStopOperation.js.map +1 -0
- package/lib/services/BulkExecutionService.d.ts +120 -0
- package/lib/services/BulkExecutionService.js +535 -0
- package/lib/services/BulkExecutionService.js.map +1 -0
- package/lib/services/CompatibilityService.d.ts +81 -0
- package/lib/services/CompatibilityService.js +118 -0
- package/lib/services/CompatibilityService.js.map +1 -0
- package/lib/services/ConfigureMode.d.ts +85 -0
- package/lib/services/ConfigureMode.js +390 -0
- package/lib/services/ConfigureMode.js.map +1 -0
- package/lib/services/ContactPointService.d.ts +111 -0
- package/lib/services/ContactPointService.js +286 -0
- package/lib/services/ContactPointService.js.map +1 -0
- package/lib/services/DataAvailabilityService.d.ts +81 -0
- package/lib/services/DataAvailabilityService.js +128 -0
- package/lib/services/DataAvailabilityService.js.map +1 -0
- package/lib/services/DefinitionFieldGenerationService.d.ts +309 -0
- package/lib/services/DefinitionFieldGenerationService.js +795 -0
- package/lib/services/DefinitionFieldGenerationService.js.map +1 -0
- package/lib/services/DefinitionQueryBuilder.d.ts +59 -0
- package/lib/services/DefinitionQueryBuilder.js +234 -0
- package/lib/services/DefinitionQueryBuilder.js.map +1 -0
- package/lib/services/ObjectDescribeService.d.ts +436 -0
- package/lib/services/ObjectDescribeService.js +869 -0
- package/lib/services/ObjectDescribeService.js.map +1 -0
- package/lib/services/ObjectFilteringService.d.ts +400 -0
- package/lib/services/ObjectFilteringService.js +878 -0
- package/lib/services/ObjectFilteringService.js.map +1 -0
- package/lib/services/ObjectListCommandService.d.ts +429 -0
- package/lib/services/ObjectListCommandService.js +873 -0
- package/lib/services/ObjectListCommandService.js.map +1 -0
- package/lib/services/ObjectListService.d.ts +201 -0
- package/lib/services/ObjectListService.js +345 -0
- package/lib/services/ObjectListService.js.map +1 -0
- package/lib/services/OrgInfoService.d.ts +485 -0
- package/lib/services/OrgInfoService.js +1122 -0
- package/lib/services/OrgInfoService.js.map +1 -0
- package/lib/services/PollingService.d.ts +105 -0
- package/lib/services/PollingService.js +117 -0
- package/lib/services/PollingService.js.map +1 -0
- package/lib/services/ProfileRequestService.d.ts +186 -0
- package/lib/services/ProfileRequestService.js +555 -0
- package/lib/services/ProfileRequestService.js.map +1 -0
- package/lib/services/ProfilingDefinitionService.d.ts +535 -0
- package/lib/services/ProfilingDefinitionService.js +981 -0
- package/lib/services/ProfilingDefinitionService.js.map +1 -0
- package/lib/services/ProfilingExecutionService.d.ts +122 -0
- package/lib/services/ProfilingExecutionService.js +320 -0
- package/lib/services/ProfilingExecutionService.js.map +1 -0
- package/lib/services/ProfilingSummaryService.d.ts +292 -0
- package/lib/services/ProfilingSummaryService.js +685 -0
- package/lib/services/ProfilingSummaryService.js.map +1 -0
- package/lib/services/RecordTypeService.d.ts +129 -0
- package/lib/services/RecordTypeService.js +284 -0
- package/lib/services/RecordTypeService.js.map +1 -0
- package/lib/services/SFDMUService.d.ts +133 -0
- package/lib/services/SFDMUService.js +295 -0
- package/lib/services/SFDMUService.js.map +1 -0
- package/lib/services/TabDetectionService.d.ts +105 -0
- package/lib/services/TabDetectionService.js +206 -0
- package/lib/services/TabDetectionService.js.map +1 -0
- package/lib/services/UnconfigureMode.d.ts +74 -0
- package/lib/services/UnconfigureMode.js +378 -0
- package/lib/services/UnconfigureMode.js.map +1 -0
- package/lib/services/UserConfigurationService.d.ts +155 -0
- package/lib/services/UserConfigurationService.js +573 -0
- package/lib/services/UserConfigurationService.js.map +1 -0
- package/lib/services/UserConfigurationTypes.d.ts +181 -0
- package/lib/services/UserConfigurationTypes.js +14 -0
- package/lib/services/UserConfigurationTypes.js.map +1 -0
- package/lib/services/UserReadinessService.d.ts +330 -0
- package/lib/services/UserReadinessService.js +831 -0
- package/lib/services/UserReadinessService.js.map +1 -0
- package/lib/services/constants.d.ts +53 -0
- package/lib/services/constants.js +71 -0
- package/lib/services/constants.js.map +1 -0
- package/lib/services/namespace-constants.d.ts +1 -0
- package/lib/services/namespace-constants.js +11 -0
- package/lib/services/namespace-constants.js.map +1 -0
- package/lib/services/validation.d.ts +47 -0
- package/lib/services/validation.js +119 -0
- package/lib/services/validation.js.map +1 -0
- package/lib/utils/batch-processor.d.ts +13 -0
- package/lib/utils/batch-processor.js +39 -0
- package/lib/utils/batch-processor.js.map +1 -0
- package/lib/utils/formatting/availability-grid.d.ts +81 -0
- package/lib/utils/formatting/availability-grid.js +94 -0
- package/lib/utils/formatting/availability-grid.js.map +1 -0
- package/lib/utils/formatting/business-process-grid.d.ts +51 -0
- package/lib/utils/formatting/business-process-grid.js +58 -0
- package/lib/utils/formatting/business-process-grid.js.map +1 -0
- package/lib/utils/formatting/command-display.d.ts +154 -0
- package/lib/utils/formatting/command-display.js +154 -0
- package/lib/utils/formatting/command-display.js.map +1 -0
- package/lib/utils/formatting/definition-create-display.d.ts +118 -0
- package/lib/utils/formatting/definition-create-display.js +231 -0
- package/lib/utils/formatting/definition-create-display.js.map +1 -0
- package/lib/utils/formatting/empty-states.d.ts +35 -0
- package/lib/utils/formatting/empty-states.js +70 -0
- package/lib/utils/formatting/empty-states.js.map +1 -0
- package/lib/utils/formatting/errors.d.ts +33 -0
- package/lib/utils/formatting/errors.js +72 -0
- package/lib/utils/formatting/errors.js.map +1 -0
- package/lib/utils/formatting/field-types.d.ts +32 -0
- package/lib/utils/formatting/field-types.js +88 -0
- package/lib/utils/formatting/field-types.js.map +1 -0
- package/lib/utils/formatting/index.d.ts +29 -0
- package/lib/utils/formatting/index.js +28 -0
- package/lib/utils/formatting/index.js.map +1 -0
- package/lib/utils/formatting/indicators.d.ts +113 -0
- package/lib/utils/formatting/indicators.js +161 -0
- package/lib/utils/formatting/indicators.js.map +1 -0
- package/lib/utils/formatting/loading-messages.d.ts +37 -0
- package/lib/utils/formatting/loading-messages.js +50 -0
- package/lib/utils/formatting/loading-messages.js.map +1 -0
- package/lib/utils/formatting/namespace-display.d.ts +31 -0
- package/lib/utils/formatting/namespace-display.js +64 -0
- package/lib/utils/formatting/namespace-display.js.map +1 -0
- package/lib/utils/formatting/numbers.d.ts +73 -0
- package/lib/utils/formatting/numbers.js +187 -0
- package/lib/utils/formatting/numbers.js.map +1 -0
- package/lib/utils/formatting/object-describe-display.d.ts +114 -0
- package/lib/utils/formatting/object-describe-display.js +440 -0
- package/lib/utils/formatting/object-describe-display.js.map +1 -0
- package/lib/utils/formatting/object-list-display.d.ts +213 -0
- package/lib/utils/formatting/object-list-display.js +672 -0
- package/lib/utils/formatting/object-list-display.js.map +1 -0
- package/lib/utils/formatting/org-identity.d.ts +15 -0
- package/lib/utils/formatting/org-identity.js +28 -0
- package/lib/utils/formatting/org-identity.js.map +1 -0
- package/lib/utils/formatting/record-age-grid.d.ts +41 -0
- package/lib/utils/formatting/record-age-grid.js +56 -0
- package/lib/utils/formatting/record-age-grid.js.map +1 -0
- package/lib/utils/formatting/sections.d.ts +108 -0
- package/lib/utils/formatting/sections.js +150 -0
- package/lib/utils/formatting/sections.js.map +1 -0
- package/lib/utils/formatting/tables.d.ts +90 -0
- package/lib/utils/formatting/tables.js +113 -0
- package/lib/utils/formatting/tables.js.map +1 -0
- package/lib/utils/formatting/user-details-display.d.ts +101 -0
- package/lib/utils/formatting/user-details-display.js +425 -0
- package/lib/utils/formatting/user-details-display.js.map +1 -0
- package/lib/utils/pagination/index.d.ts +11 -0
- package/lib/utils/pagination/index.js +18 -0
- package/lib/utils/pagination/index.js.map +1 -0
- package/lib/utils/pagination/keypress-reader.d.ts +20 -0
- package/lib/utils/pagination/keypress-reader.js +63 -0
- package/lib/utils/pagination/keypress-reader.js.map +1 -0
- package/lib/utils/pagination/paginate-output.d.ts +48 -0
- package/lib/utils/pagination/paginate-output.js +136 -0
- package/lib/utils/pagination/paginate-output.js.map +1 -0
- package/messages/compatibility.check.md +71 -0
- package/messages/cuneiform.access.md +138 -0
- package/messages/definition.create.md +511 -0
- package/messages/definition.export.md +84 -0
- package/messages/definition.get.md +147 -0
- package/messages/definition.import.md +65 -0
- package/messages/definition.list.md +264 -0
- package/messages/definition.purge.md +318 -0
- package/messages/definition.update.md +118 -0
- package/messages/mcp.serve.md +66 -0
- package/messages/object.describe.md +201 -0
- package/messages/object.list.md +443 -0
- package/messages/org.details.md +386 -0
- package/messages/org.reset.md +71 -0
- package/messages/profile.md +231 -0
- package/messages/profile.request.cancel.md +143 -0
- package/messages/profile.request.delete.md +139 -0
- package/messages/profile.request.list.md +89 -0
- package/messages/summary.purge.md +218 -0
- package/messages/summary.reprofile.md +150 -0
- package/messages/summary.stop.md +157 -0
- package/messages/user.details.md +501 -0
- package/oclif.lock +2887 -2149
- package/oclif.manifest.json +2813 -31
- package/package.json +94 -19
- package/lib/commands/cuneiform/about.d.ts +0 -13
- package/lib/commands/cuneiform/about.js +0 -26
- package/lib/commands/cuneiform/about.js.map +0 -1
- package/lib/commands/hello/world.d.ts +0 -14
- package/lib/commands/hello/world.js +0 -27
- package/lib/commands/hello/world.js.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/messages/cuneiform.about.md +0 -19
- package/messages/hello.world.md +0 -29
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026, PeerNova, Inc. All Rights Reserved.
|
|
3
|
+
* PROPRIETARY AND CONFIDENTIAL. Unauthorized copying, modification,
|
|
4
|
+
* or distribution is strictly prohibited. Use is governed by the
|
|
5
|
+
* Master Subscription Agreement (MSA) between PeerNova, Inc. and the
|
|
6
|
+
* licensee. See LICENSE file in the repo root.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync } from 'node:fs';
|
|
9
|
+
import { dirname, join } from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { SfError } from '@salesforce/core';
|
|
12
|
+
/**
|
|
13
|
+
* Default manifest reader — loads `package.json` from the project root by
|
|
14
|
+
* resolving a path relative to this source file. Source layout:
|
|
15
|
+
* `src/services/CompatibilityService.ts` → `../../package.json`. The compiled
|
|
16
|
+
* layout (`lib/services/CompatibilityService.js`) resolves identically.
|
|
17
|
+
*/
|
|
18
|
+
const defaultManifestReader = () => {
|
|
19
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const pkgPath = join(here, '..', '..', 'package.json');
|
|
21
|
+
return JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Service for evaluating compatibility between the running CLI version and the
|
|
25
|
+
* Cuneiform For Salesforce managed package installed in a target org.
|
|
26
|
+
*
|
|
27
|
+
* Stateless. The required version is sourced from `package.json`; the installed
|
|
28
|
+
* version is supplied by the caller (typically via
|
|
29
|
+
* `OrgInfoService.getCuneiformPackageInfo`).
|
|
30
|
+
*
|
|
31
|
+
* Comparison semantics: version strings are parsed as integer tuples padded to
|
|
32
|
+
* four parts (`Major.Minor.Patch.Build`). Equality on the padded tuple yields
|
|
33
|
+
* `installed-match`; lexicographic order on the padded tuple yields
|
|
34
|
+
* `installed-newer` / `installed-older`. A null/undefined installed version
|
|
35
|
+
* yields `not-installed`.
|
|
36
|
+
*/
|
|
37
|
+
export class CompatibilityService {
|
|
38
|
+
manifestReader;
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.manifestReader = config?.manifestReader ?? defaultManifestReader;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Compare a required version to an installed version. Pure function — exposed
|
|
44
|
+
* as a static method since it does not depend on instance state.
|
|
45
|
+
*
|
|
46
|
+
* @param required - required version string (`Major.Minor` or `Major.Minor.Patch.Build`)
|
|
47
|
+
* @param installed - installed version string, or `null`/`undefined` if absent
|
|
48
|
+
* @returns one of `installed-match`, `installed-newer`, `installed-older`, `not-installed`
|
|
49
|
+
* @throws SfError (E4682) when either version string contains a non-numeric component
|
|
50
|
+
*/
|
|
51
|
+
static compare(required, installed) {
|
|
52
|
+
if (installed === null || installed === undefined)
|
|
53
|
+
return 'not-installed';
|
|
54
|
+
const requiredParts = parseVersion(required, 'required');
|
|
55
|
+
const installedParts = parseVersion(installed, 'installed');
|
|
56
|
+
for (let i = 0; i < 4; i++) {
|
|
57
|
+
const r = requiredParts[i] ?? 0;
|
|
58
|
+
const v = installedParts[i] ?? 0;
|
|
59
|
+
if (v > r)
|
|
60
|
+
return 'installed-newer';
|
|
61
|
+
if (v < r)
|
|
62
|
+
return 'installed-older';
|
|
63
|
+
}
|
|
64
|
+
return 'installed-match';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load the required Cuneiform For Salesforce app version from the manifest.
|
|
68
|
+
*
|
|
69
|
+
* @returns the parsed required version
|
|
70
|
+
* @throws SfError (E4681) when `cuneiform.requiredAppVersion` is missing or empty
|
|
71
|
+
*/
|
|
72
|
+
loadRequired() {
|
|
73
|
+
const manifest = this.manifestReader();
|
|
74
|
+
const raw = manifest.cuneiform?.requiredAppVersion;
|
|
75
|
+
if (typeof raw !== 'string' || raw.trim() === '') {
|
|
76
|
+
throw new SfError('package.json is missing the required "cuneiform.requiredAppVersion" field. ' +
|
|
77
|
+
'Add it as part of the CLI release procedure (see README → "Compatibility").', 'E4681');
|
|
78
|
+
}
|
|
79
|
+
return { version: stripLeadingV(raw.trim()) };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Load the CLI plugin's own version from the manifest (`package.json` `version` field).
|
|
83
|
+
*
|
|
84
|
+
* @returns the CLI version string verbatim (e.g., "1.0.4-beta.1")
|
|
85
|
+
* @throws SfError (E4684) when `version` is missing or empty (should never happen for npm-published packages)
|
|
86
|
+
*/
|
|
87
|
+
loadCliVersion() {
|
|
88
|
+
const manifest = this.manifestReader();
|
|
89
|
+
const raw = manifest.version;
|
|
90
|
+
if (typeof raw !== 'string' || raw.trim() === '') {
|
|
91
|
+
throw new SfError('package.json is missing the "version" field.', 'E4684');
|
|
92
|
+
}
|
|
93
|
+
return raw.trim();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Parse a Salesforce package version string into a 4-tuple of integers, padding
|
|
98
|
+
* missing parts with 0.
|
|
99
|
+
*/
|
|
100
|
+
function parseVersion(raw, label) {
|
|
101
|
+
const stripped = stripLeadingV(raw.trim());
|
|
102
|
+
const parts = stripped.split('.');
|
|
103
|
+
const tuple = [];
|
|
104
|
+
for (const part of parts) {
|
|
105
|
+
if (!/^\d+$/.test(part)) {
|
|
106
|
+
throw new SfError(`${label} version "${raw}" contains a non-numeric component "${part}". ` +
|
|
107
|
+
'Expected Major.Minor or Major.Minor.Patch.Build.', 'E4682');
|
|
108
|
+
}
|
|
109
|
+
tuple.push(Number.parseInt(part, 10));
|
|
110
|
+
}
|
|
111
|
+
while (tuple.length < 4)
|
|
112
|
+
tuple.push(0);
|
|
113
|
+
return tuple;
|
|
114
|
+
}
|
|
115
|
+
function stripLeadingV(raw) {
|
|
116
|
+
return raw.startsWith('v') || raw.startsWith('V') ? raw.slice(1) : raw;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=CompatibilityService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompatibilityService.js","sourceRoot":"","sources":["../../src/services/CompatibilityService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ServiceResult } from '../models/service-result.js';
|
|
2
|
+
import { type UserConfigurationResult, type IConfigurationServiceDeps } from './UserConfigurationTypes.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handles the configure workflow for UserConfigurationService.
|
|
5
|
+
*
|
|
6
|
+
* Checks the current user state, identifies required changes (permission sets,
|
|
7
|
+
* API-only profiling), and optionally applies them. Supports dry-run mode to
|
|
8
|
+
* preview changes without applying them.
|
|
9
|
+
*
|
|
10
|
+
* This class is instantiated by UserConfigurationService and should not be
|
|
11
|
+
* used directly by consumers.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConfigureMode {
|
|
14
|
+
private readonly deps;
|
|
15
|
+
constructor(deps: IConfigurationServiceDeps);
|
|
16
|
+
/**
|
|
17
|
+
* Creates an empty UserConfigurationResult for error cases.
|
|
18
|
+
*/
|
|
19
|
+
private static createEmptyConfigurationResult;
|
|
20
|
+
/**
|
|
21
|
+
* Builds the previous configuration state from readiness check.
|
|
22
|
+
*/
|
|
23
|
+
private static buildConfigurationState;
|
|
24
|
+
/**
|
|
25
|
+
* Builds the list of required configuration actions.
|
|
26
|
+
*/
|
|
27
|
+
private static buildConfigurationActions;
|
|
28
|
+
/**
|
|
29
|
+
* Creates the result when Cuneiform is not installed.
|
|
30
|
+
*/
|
|
31
|
+
private static createCuneiformNotInstalledResult;
|
|
32
|
+
/**
|
|
33
|
+
* Handles permission set insert failures, mapping error codes appropriately.
|
|
34
|
+
*/
|
|
35
|
+
private static handlePermissionSetInsertFailure;
|
|
36
|
+
/**
|
|
37
|
+
* Orchestrates user configuration for Cuneiform operations.
|
|
38
|
+
*
|
|
39
|
+
* Checks the current user state, identifies required changes (permission sets,
|
|
40
|
+
* API-only profiling), and optionally applies them. Supports dry-run mode to
|
|
41
|
+
* preview changes without applying them.
|
|
42
|
+
*
|
|
43
|
+
* **Idempotency**: Skips already-configured items. Re-running configure() on
|
|
44
|
+
* a fully configured user will report all actions as 'skipped'.
|
|
45
|
+
*
|
|
46
|
+
* @param userId - The Salesforce user ID to configure
|
|
47
|
+
* @param options - Configuration options
|
|
48
|
+
* @param options.dryRun - If true, reports planned changes without applying them (default: false)
|
|
49
|
+
* @returns ServiceResult containing UserConfigurationResult with actions taken/skipped/failed
|
|
50
|
+
*/
|
|
51
|
+
execute(userId: string, options?: {
|
|
52
|
+
dryRun?: boolean;
|
|
53
|
+
}): Promise<ServiceResult<UserConfigurationResult>>;
|
|
54
|
+
/**
|
|
55
|
+
* Executes a single permission set assignment action.
|
|
56
|
+
*/
|
|
57
|
+
private executePermissionSetAction;
|
|
58
|
+
/**
|
|
59
|
+
* Executes a single API-only profiling action.
|
|
60
|
+
*/
|
|
61
|
+
private executeApiOnlyProfilingAction;
|
|
62
|
+
/**
|
|
63
|
+
* Executes all configuration actions sequentially.
|
|
64
|
+
*
|
|
65
|
+
* Actions are executed sequentially because permission set assignments
|
|
66
|
+
* may have dependencies and order matters for proper error reporting.
|
|
67
|
+
*/
|
|
68
|
+
private executeConfigurationActions;
|
|
69
|
+
/**
|
|
70
|
+
* Fetches user readiness state and user info in parallel.
|
|
71
|
+
*/
|
|
72
|
+
private fetchUserReadinessState;
|
|
73
|
+
/**
|
|
74
|
+
* Fetches the updated configuration state after applying changes.
|
|
75
|
+
*/
|
|
76
|
+
private fetchUpdatedState;
|
|
77
|
+
/**
|
|
78
|
+
* Builds the final configuration result based on execution outcomes.
|
|
79
|
+
*/
|
|
80
|
+
private buildConfigurationResult;
|
|
81
|
+
/**
|
|
82
|
+
* Creates the result for dry-run mode or when no changes are needed.
|
|
83
|
+
*/
|
|
84
|
+
private createDryRunOrNoChangesResult;
|
|
85
|
+
}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026, PeerNova, Inc. All Rights Reserved.
|
|
3
|
+
* PROPRIETARY AND CONFIDENTIAL. Unauthorized copying, modification,
|
|
4
|
+
* or distribution is strictly prohibited. Use is governed by the
|
|
5
|
+
* Master Subscription Agreement (MSA) between PeerNova, Inc. and the
|
|
6
|
+
* licensee. See LICENSE file in the repo root.
|
|
7
|
+
*/
|
|
8
|
+
import { createSuccessResult, createFailureResult } from '../models/service-result.js';
|
|
9
|
+
import { AdapterErrorCodes, ServiceErrorCodes } from '../adapters/errors.js';
|
|
10
|
+
import { CUNEIFORM_NAMESPACE } from './namespace-constants.js';
|
|
11
|
+
import { validateRequiredString } from './validation.js';
|
|
12
|
+
import { REQUIRED_PERMISSION_SETS, REQUIRED_PERMISSION_SET_LABELS } from './UserReadinessService.js';
|
|
13
|
+
import { CONFIGURABLE_PERMISSION_SETS, } from './UserConfigurationTypes.js';
|
|
14
|
+
/**
|
|
15
|
+
* Handles the configure workflow for UserConfigurationService.
|
|
16
|
+
*
|
|
17
|
+
* Checks the current user state, identifies required changes (permission sets,
|
|
18
|
+
* API-only profiling), and optionally applies them. Supports dry-run mode to
|
|
19
|
+
* preview changes without applying them.
|
|
20
|
+
*
|
|
21
|
+
* This class is instantiated by UserConfigurationService and should not be
|
|
22
|
+
* used directly by consumers.
|
|
23
|
+
*/
|
|
24
|
+
export class ConfigureMode {
|
|
25
|
+
deps;
|
|
26
|
+
constructor(deps) {
|
|
27
|
+
this.deps = deps;
|
|
28
|
+
}
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Static helpers
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Creates an empty UserConfigurationResult for error cases.
|
|
34
|
+
*/
|
|
35
|
+
static createEmptyConfigurationResult(userId, dryRun, username = '') {
|
|
36
|
+
return {
|
|
37
|
+
user: { id: userId, username },
|
|
38
|
+
dryRun,
|
|
39
|
+
previousState: {
|
|
40
|
+
userId,
|
|
41
|
+
username,
|
|
42
|
+
hasRequiredPermissionSets: false,
|
|
43
|
+
missingPermissionSets: [...REQUIRED_PERMISSION_SETS],
|
|
44
|
+
apiOnlyProfilingEnabled: false,
|
|
45
|
+
},
|
|
46
|
+
actions: [],
|
|
47
|
+
currentState: null,
|
|
48
|
+
summary: {
|
|
49
|
+
changesRequired: 0,
|
|
50
|
+
changesApplied: 0,
|
|
51
|
+
changesFailed: 0,
|
|
52
|
+
isReady: false,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Builds the previous configuration state from readiness check.
|
|
58
|
+
*/
|
|
59
|
+
static buildConfigurationState(userId, username, readiness) {
|
|
60
|
+
return {
|
|
61
|
+
userId,
|
|
62
|
+
username,
|
|
63
|
+
hasRequiredPermissionSets: readiness.permissionSets.hasAllRequired,
|
|
64
|
+
missingPermissionSets: readiness.permissionSets.missingRequired,
|
|
65
|
+
apiOnlyProfilingEnabled: readiness.configProfile.apiOnlyProfilingEnabled ?? false,
|
|
66
|
+
profileDeveloperName: readiness.configProfile.profileDeveloperName,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Builds the list of required configuration actions.
|
|
71
|
+
*/
|
|
72
|
+
static buildConfigurationActions(previousState, dryRun) {
|
|
73
|
+
const actions = [];
|
|
74
|
+
// Only create assignment actions for configurable permission sets.
|
|
75
|
+
// Admin User Pro is a prerequisite (read-only verification) — not assigned by CLI.
|
|
76
|
+
const configurableMissing = previousState.missingPermissionSets.filter((ps) => CONFIGURABLE_PERMISSION_SETS.includes(ps));
|
|
77
|
+
for (const missingPerm of configurableMissing) {
|
|
78
|
+
actions.push({
|
|
79
|
+
type: 'assignPermissionSet',
|
|
80
|
+
target: missingPerm,
|
|
81
|
+
targetLabel: REQUIRED_PERMISSION_SET_LABELS[missingPerm],
|
|
82
|
+
status: dryRun ? 'skipped' : 'applied',
|
|
83
|
+
message: dryRun ? 'Would assign permission set' : undefined,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (!previousState.apiOnlyProfilingEnabled && previousState.profileDeveloperName) {
|
|
87
|
+
actions.push({
|
|
88
|
+
type: 'enableApiOnlyProfiling',
|
|
89
|
+
target: previousState.profileDeveloperName,
|
|
90
|
+
status: dryRun ? 'skipped' : 'applied',
|
|
91
|
+
message: dryRun ? 'Would enable API-only profiling' : undefined,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return actions;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates the result when Cuneiform is not installed.
|
|
98
|
+
*/
|
|
99
|
+
static createCuneiformNotInstalledResult(userId, username, dryRun, previousState, startTime) {
|
|
100
|
+
return createFailureResult({
|
|
101
|
+
user: { id: userId, username },
|
|
102
|
+
dryRun,
|
|
103
|
+
previousState,
|
|
104
|
+
actions: [],
|
|
105
|
+
currentState: null,
|
|
106
|
+
summary: { changesRequired: 0, changesApplied: 0, changesFailed: 0, isReady: false },
|
|
107
|
+
}, ServiceErrorCodes.USER_CUNEIFORM_NAMESPACE_NOT_FOUND, 'Cuneiform for Salesforce is not installed in this org', { metadata: { duration: Date.now() - startTime } });
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Handles permission set insert failures, mapping error codes appropriately.
|
|
111
|
+
*/
|
|
112
|
+
static handlePermissionSetInsertFailure(insertResult) {
|
|
113
|
+
if (insertResult.errorCode === AdapterErrorCodes.INSERT_DUPLICATE_VALUE) {
|
|
114
|
+
return { status: 'skipped', message: 'Permission set already assigned', failed: false };
|
|
115
|
+
}
|
|
116
|
+
if (insertResult.errorCode === AdapterErrorCodes.INSERT_INSUFFICIENT_ACCESS) {
|
|
117
|
+
return { status: 'failed', message: 'Insufficient access to assign permission set', failed: true };
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
status: 'failed',
|
|
121
|
+
message: insertResult.message ?? 'Permission set assignment failed',
|
|
122
|
+
failed: true,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Orchestrates user configuration for Cuneiform operations.
|
|
127
|
+
*
|
|
128
|
+
* Checks the current user state, identifies required changes (permission sets,
|
|
129
|
+
* API-only profiling), and optionally applies them. Supports dry-run mode to
|
|
130
|
+
* preview changes without applying them.
|
|
131
|
+
*
|
|
132
|
+
* **Idempotency**: Skips already-configured items. Re-running configure() on
|
|
133
|
+
* a fully configured user will report all actions as 'skipped'.
|
|
134
|
+
*
|
|
135
|
+
* @param userId - The Salesforce user ID to configure
|
|
136
|
+
* @param options - Configuration options
|
|
137
|
+
* @param options.dryRun - If true, reports planned changes without applying them (default: false)
|
|
138
|
+
* @returns ServiceResult containing UserConfigurationResult with actions taken/skipped/failed
|
|
139
|
+
*/
|
|
140
|
+
async execute(userId, options) {
|
|
141
|
+
const startTime = Date.now();
|
|
142
|
+
const dryRun = options?.dryRun ?? false;
|
|
143
|
+
// Validate userId
|
|
144
|
+
const validationError = validateRequiredString(userId, 'User ID');
|
|
145
|
+
if (validationError) {
|
|
146
|
+
return createFailureResult(ConfigureMode.createEmptyConfigurationResult(userId, dryRun), ServiceErrorCodes.USER_CONFIG_USER_ID_REQUIRED, validationError, { metadata: { duration: Date.now() - startTime } });
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
this.deps.logger?.log(`Configuring user: ${userId}${dryRun ? ' (dry-run)' : ''}`);
|
|
150
|
+
// Step 1: Get current user readiness state
|
|
151
|
+
const { readiness: rawReadiness, username, errorResult, } = await this.fetchUserReadinessState(userId, dryRun, startTime);
|
|
152
|
+
if (errorResult)
|
|
153
|
+
return errorResult;
|
|
154
|
+
// readiness is guaranteed non-undefined when errorResult is null
|
|
155
|
+
const readiness = rawReadiness;
|
|
156
|
+
const previousState = ConfigureMode.buildConfigurationState(userId, username, readiness);
|
|
157
|
+
// Check if Cuneiform is installed
|
|
158
|
+
if (!readiness.isCuneiformInstalled) {
|
|
159
|
+
return ConfigureMode.createCuneiformNotInstalledResult(userId, username, dryRun, previousState, startTime);
|
|
160
|
+
}
|
|
161
|
+
// Gate: Self-registration must be enabled for CLI self-provisioning
|
|
162
|
+
// This ensures the admin has explicitly authorized users to self-configure
|
|
163
|
+
// API profiling access via the CLI. Without this, the permission set
|
|
164
|
+
// assignment is blocked to preserve the admin's security posture.
|
|
165
|
+
// Only enforced when a config profile exists — if no profile is configured,
|
|
166
|
+
// the configure flow will create/enable it (handled by downstream actions).
|
|
167
|
+
if (readiness.configProfile.isConfigured && readiness.configProfile.selfRegistrationEnabled !== true) {
|
|
168
|
+
return createFailureResult(ConfigureMode.createEmptyConfigurationResult(userId, dryRun, username), ServiceErrorCodes.SELF_REGISTRATION_NOT_ENABLED, 'Cuneiform is installed and API-Only Profiling is enabled, but CLI self-provisioning is not available. ' +
|
|
169
|
+
'Your administrator has not enabled CLI self-provisioning for API-based profiling. ' +
|
|
170
|
+
'This setting ensures your admin controls which users can configure their own API profiling access. ' +
|
|
171
|
+
'Ask your Salesforce administrator to enable "Enable API Profiling Self-Registration" ' +
|
|
172
|
+
'in the Cuneiform Configuration Profile (Custom Metadata), ' +
|
|
173
|
+
'or request they assign the API-Based Profiling permission set to you directly.', { metadata: { duration: Date.now() - startTime } });
|
|
174
|
+
}
|
|
175
|
+
// Step 2: Identify required actions
|
|
176
|
+
const actions = ConfigureMode.buildConfigurationActions(previousState, dryRun);
|
|
177
|
+
const changesRequired = actions.length;
|
|
178
|
+
// If dry-run or no changes needed, return early
|
|
179
|
+
if (dryRun || changesRequired === 0) {
|
|
180
|
+
return this.createDryRunOrNoChangesResult(userId, username, dryRun, previousState, actions, changesRequired, readiness.isReady, startTime);
|
|
181
|
+
}
|
|
182
|
+
// Step 3: Execute actions
|
|
183
|
+
const { changesApplied, changesFailed } = await this.executeConfigurationActions(actions, userId);
|
|
184
|
+
// Step 4: Get updated state (if changes were made)
|
|
185
|
+
const currentState = await this.fetchUpdatedState(userId, username, changesApplied);
|
|
186
|
+
return this.buildConfigurationResult(userId, username, dryRun, previousState, actions, currentState, changesRequired, changesApplied, changesFailed, Date.now() - startTime);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
190
|
+
this.deps.logger?.log(`Configuration failed: ${errorMessage}`);
|
|
191
|
+
return createFailureResult(ConfigureMode.createEmptyConfigurationResult(userId, dryRun), ServiceErrorCodes.USER_CONFIG_QUERY_FAILED, errorMessage, { metadata: { duration: Date.now() - startTime } });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// Private instance helpers
|
|
196
|
+
// ============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Executes a single permission set assignment action.
|
|
199
|
+
*/
|
|
200
|
+
async executePermissionSetAction(action, userId) {
|
|
201
|
+
const permSetIdResult = await this.deps.getPermissionSetId(action.target, CUNEIFORM_NAMESPACE);
|
|
202
|
+
if (!permSetIdResult.success || !permSetIdResult.data) {
|
|
203
|
+
return {
|
|
204
|
+
applied: false,
|
|
205
|
+
failed: true,
|
|
206
|
+
update: {
|
|
207
|
+
status: 'failed',
|
|
208
|
+
message: permSetIdResult.message ?? 'Permission set not found',
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const insertResult = await this.deps.restApiAdapter.insertRecord('PermissionSetAssignment', {
|
|
213
|
+
AssigneeId: userId,
|
|
214
|
+
PermissionSetId: permSetIdResult.data,
|
|
215
|
+
});
|
|
216
|
+
if (!insertResult.success) {
|
|
217
|
+
const failureInfo = ConfigureMode.handlePermissionSetInsertFailure(insertResult);
|
|
218
|
+
return {
|
|
219
|
+
applied: false,
|
|
220
|
+
failed: failureInfo.failed,
|
|
221
|
+
update: { status: failureInfo.status, message: failureInfo.message },
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
applied: true,
|
|
226
|
+
failed: false,
|
|
227
|
+
update: {
|
|
228
|
+
status: 'applied',
|
|
229
|
+
message: 'Permission set assigned',
|
|
230
|
+
details: { permissionSetAssignmentId: insertResult.data.id },
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Executes a single API-only profiling action.
|
|
236
|
+
*/
|
|
237
|
+
async executeApiOnlyProfilingAction(action) {
|
|
238
|
+
const deployResult = await this.deps.enableApiOnlyProfiling(action.target);
|
|
239
|
+
if (!deployResult.success) {
|
|
240
|
+
return {
|
|
241
|
+
applied: false,
|
|
242
|
+
failed: true,
|
|
243
|
+
update: {
|
|
244
|
+
status: 'failed',
|
|
245
|
+
message: deployResult.message ?? 'Failed to enable API-only profiling',
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
const update = {
|
|
250
|
+
status: 'applied',
|
|
251
|
+
message: 'API-only profiling deployment triggered',
|
|
252
|
+
};
|
|
253
|
+
if (deployResult.data.jobId) {
|
|
254
|
+
update.details = { deploymentJobId: deployResult.data.jobId };
|
|
255
|
+
// Wait for deployment to complete so state is consistent for subsequent operations
|
|
256
|
+
const completionResult = await this.deps.waitForDeploymentCompletion(deployResult.data.jobId);
|
|
257
|
+
if (completionResult.success && completionResult.data.status === 'Failed') {
|
|
258
|
+
return {
|
|
259
|
+
applied: false,
|
|
260
|
+
failed: true,
|
|
261
|
+
update: {
|
|
262
|
+
status: 'failed',
|
|
263
|
+
message: completionResult.data.errorMessage ?? 'CMT deployment failed',
|
|
264
|
+
details: { deploymentJobId: deployResult.data.jobId },
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
update.message = `API-only profiling deployment ${completionResult.data.status.toLowerCase()}`;
|
|
269
|
+
}
|
|
270
|
+
return { applied: true, failed: false, update };
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Executes all configuration actions sequentially.
|
|
274
|
+
*
|
|
275
|
+
* Actions are executed sequentially because permission set assignments
|
|
276
|
+
* may have dependencies and order matters for proper error reporting.
|
|
277
|
+
*/
|
|
278
|
+
async executeConfigurationActions(actions, userId) {
|
|
279
|
+
let changesApplied = 0;
|
|
280
|
+
let changesFailed = 0;
|
|
281
|
+
/* eslint-disable no-await-in-loop -- Sequential execution required: permission set dependencies */
|
|
282
|
+
for (const [i, action] of actions.entries()) {
|
|
283
|
+
const result = action.type === 'assignPermissionSet'
|
|
284
|
+
? await this.executePermissionSetAction(action, userId)
|
|
285
|
+
: await this.executeApiOnlyProfilingAction(action);
|
|
286
|
+
// Apply the update to the action in the array
|
|
287
|
+
Object.assign(actions[i], result.update);
|
|
288
|
+
if (result.applied)
|
|
289
|
+
changesApplied++;
|
|
290
|
+
if (result.failed)
|
|
291
|
+
changesFailed++;
|
|
292
|
+
}
|
|
293
|
+
/* eslint-enable no-await-in-loop */
|
|
294
|
+
return { changesApplied, changesFailed };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Fetches user readiness state and user info in parallel.
|
|
298
|
+
*/
|
|
299
|
+
async fetchUserReadinessState(userId, dryRun, startTime) {
|
|
300
|
+
const [readinessResult, userInfoResult] = await Promise.all([
|
|
301
|
+
this.deps.userReadinessService.checkReadiness(userId),
|
|
302
|
+
this.deps.userReadinessService.getUserInfo(userId),
|
|
303
|
+
]);
|
|
304
|
+
if (!readinessResult.success) {
|
|
305
|
+
return {
|
|
306
|
+
readiness: undefined,
|
|
307
|
+
username: '',
|
|
308
|
+
errorResult: createFailureResult(ConfigureMode.createEmptyConfigurationResult(userId, dryRun), readinessResult.errorCode ?? ServiceErrorCodes.USER_CONFIG_QUERY_FAILED, readinessResult.message ?? 'Failed to check user readiness', { metadata: { duration: Date.now() - startTime } }),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
readiness: readinessResult.data,
|
|
313
|
+
username: userInfoResult.success ? userInfoResult.data.username : '',
|
|
314
|
+
errorResult: null,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Fetches the updated configuration state after applying changes.
|
|
319
|
+
*/
|
|
320
|
+
async fetchUpdatedState(userId, username, changesApplied) {
|
|
321
|
+
if (changesApplied === 0)
|
|
322
|
+
return null;
|
|
323
|
+
const updatedReadinessResult = await this.deps.userReadinessService.checkReadiness(userId);
|
|
324
|
+
if (!updatedReadinessResult.success)
|
|
325
|
+
return null;
|
|
326
|
+
return ConfigureMode.buildConfigurationState(userId, username, updatedReadinessResult.data);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Builds the final configuration result based on execution outcomes.
|
|
330
|
+
*/
|
|
331
|
+
buildConfigurationResult(userId, username, dryRun, previousState, actions, currentState, changesRequired, changesApplied, changesFailed, duration) {
|
|
332
|
+
const isReady = currentState?.hasRequiredPermissionSets === true && currentState?.apiOnlyProfilingEnabled === true;
|
|
333
|
+
const result = {
|
|
334
|
+
user: { id: userId, username },
|
|
335
|
+
dryRun,
|
|
336
|
+
previousState,
|
|
337
|
+
actions,
|
|
338
|
+
currentState,
|
|
339
|
+
summary: { changesRequired, changesApplied, changesFailed, isReady },
|
|
340
|
+
};
|
|
341
|
+
// All changes failed
|
|
342
|
+
if (changesFailed > 0 && changesApplied === 0) {
|
|
343
|
+
this.deps.logger?.log(`Configuration failed: all ${changesFailed} change(s) failed`);
|
|
344
|
+
return createFailureResult(result, ServiceErrorCodes.USER_CONFIG_PERMISSION_SET_ASSIGN_FAILED, `Configuration failed: all ${changesFailed} change(s) failed`, { metadata: { duration } });
|
|
345
|
+
}
|
|
346
|
+
// Partial failure
|
|
347
|
+
if (changesFailed > 0) {
|
|
348
|
+
this.deps.logger?.log(`Configuration partially complete: ${changesApplied} applied, ${changesFailed} failed`);
|
|
349
|
+
return createSuccessResult(result, {
|
|
350
|
+
message: `Configuration partially complete: ${changesApplied} applied, ${changesFailed} failed`,
|
|
351
|
+
warnings: [`${changesFailed} configuration action(s) failed`],
|
|
352
|
+
metadata: { duration },
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
// All changes applied successfully
|
|
356
|
+
this.deps.logger?.log(`Configuration complete: ${changesApplied} change(s) applied`);
|
|
357
|
+
return createSuccessResult(result, {
|
|
358
|
+
message: `Configuration complete: ${changesApplied} change(s) applied`,
|
|
359
|
+
metadata: { duration },
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Creates the result for dry-run mode or when no changes are needed.
|
|
364
|
+
*/
|
|
365
|
+
createDryRunOrNoChangesResult(userId, username, dryRun, previousState, actions, changesRequired, isReadinessReady, startTime) {
|
|
366
|
+
const duration = Date.now() - startTime;
|
|
367
|
+
const isReady = changesRequired === 0 && isReadinessReady;
|
|
368
|
+
const message = dryRun
|
|
369
|
+
? `Dry-run complete: ${changesRequired} change(s) would be applied`
|
|
370
|
+
: 'This user is already fully configured; no changes are necessary';
|
|
371
|
+
this.deps.logger?.log(message);
|
|
372
|
+
return createSuccessResult({
|
|
373
|
+
user: { id: userId, username },
|
|
374
|
+
dryRun,
|
|
375
|
+
previousState,
|
|
376
|
+
actions: actions.map((a) => ({ ...a, message: dryRun ? 'Would be applied' : 'Already configured' })),
|
|
377
|
+
currentState: dryRun ? null : previousState,
|
|
378
|
+
summary: {
|
|
379
|
+
changesRequired,
|
|
380
|
+
changesApplied: 0,
|
|
381
|
+
changesFailed: 0,
|
|
382
|
+
isReady,
|
|
383
|
+
},
|
|
384
|
+
}, {
|
|
385
|
+
message,
|
|
386
|
+
metadata: { duration },
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=ConfigureMode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigureMode.js","sourceRoot":"","sources":["../../src/services/ConfigureMode.ts"],"names":[],"mappings":"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"}
|