@peernova/cuneiform-sf 1.0.2 → 1.0.4-beta.10
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 +168 -134
- 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/lifecycle.d.ts +112 -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 +393 -0
- package/lib/adapters/rest/rest-api-adapter.js +764 -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 +418 -0
- package/lib/adapters/soql/cuneiform-query-builder.js +606 -0
- package/lib/adapters/soql/cuneiform-query-builder.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 +175 -0
- package/lib/base/cuneiform-command.js +326 -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 +120 -0
- package/lib/commands/cuneiform/definition/create.js +737 -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 +277 -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 +351 -0
- package/lib/commands/cuneiform/definition/list.js.map +1 -0
- package/lib/commands/cuneiform/definition/purge.d.ts +109 -0
- package/lib/commands/cuneiform/definition/purge.js +578 -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 +209 -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 +123 -0
- package/lib/commands/cuneiform/object/list.js +264 -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 +93 -0
- package/lib/commands/cuneiform/profile.js +353 -0
- package/lib/commands/cuneiform/profile.js.map +1 -0
- package/lib/commands/cuneiform/summary/purge.d.ts +80 -0
- package/lib/commands/cuneiform/summary/purge.js +467 -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 +77 -0
- package/lib/commands/cuneiform/user/details.js +414 -0
- package/lib/commands/cuneiform/user/details.js.map +1 -0
- package/lib/constants/namespace-constants.d.ts +102 -0
- package/lib/constants/namespace-constants.js +225 -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/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 +310 -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 +220 -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 +327 -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/cascade-skip-accumulator.d.ts +25 -0
- package/lib/models/cascade-skip-accumulator.js +9 -0
- package/lib/models/cascade-skip-accumulator.js.map +1 -0
- package/lib/models/date-literal.d.ts +280 -0
- package/lib/models/date-literal.js +1164 -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/portability-recipe.d.ts +35 -0
- package/lib/models/portability-recipe.js +113 -0
- package/lib/models/portability-recipe.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 +49 -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 +188 -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 +427 -0
- package/lib/operations/DefinitionCreateOperation.js +1270 -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 +203 -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 +192 -0
- package/lib/operations/ProfileOperation.js +371 -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 +98 -0
- package/lib/services/ConfigureMode.js +413 -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 +357 -0
- package/lib/services/DefinitionFieldGenerationService.js +899 -0
- package/lib/services/DefinitionFieldGenerationService.js.map +1 -0
- package/lib/services/DefinitionQueryBuilder.d.ts +92 -0
- package/lib/services/DefinitionQueryBuilder.js +328 -0
- package/lib/services/DefinitionQueryBuilder.js.map +1 -0
- package/lib/services/ObjectDescribeService.d.ts +436 -0
- package/lib/services/ObjectDescribeService.js +881 -0
- package/lib/services/ObjectDescribeService.js.map +1 -0
- package/lib/services/ObjectFilteringService.d.ts +484 -0
- package/lib/services/ObjectFilteringService.js +1080 -0
- package/lib/services/ObjectFilteringService.js.map +1 -0
- package/lib/services/ObjectListCommandService.d.ts +467 -0
- package/lib/services/ObjectListCommandService.js +904 -0
- package/lib/services/ObjectListCommandService.js.map +1 -0
- package/lib/services/ObjectListService.d.ts +201 -0
- package/lib/services/ObjectListService.js +350 -0
- package/lib/services/ObjectListService.js.map +1 -0
- package/lib/services/OrgInfoService.d.ts +493 -0
- package/lib/services/OrgInfoService.js +1142 -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 +575 -0
- package/lib/services/ProfilingDefinitionService.js +1029 -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 +688 -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 +146 -0
- package/lib/services/SFDMUService.js +323 -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 +158 -0
- package/lib/services/UserConfigurationService.js +574 -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 +347 -0
- package/lib/services/UserReadinessService.js +891 -0
- package/lib/services/UserReadinessService.js.map +1 -0
- package/lib/services/constants.d.ts +54 -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/namespace-filter.d.ts +36 -0
- package/lib/services/namespace-filter.js +109 -0
- package/lib/services/namespace-filter.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 +230 -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 +117 -0
- package/lib/utils/formatting/object-describe-display.js +447 -0
- package/lib/utils/formatting/object-describe-display.js.map +1 -0
- package/lib/utils/formatting/object-list-display.d.ts +225 -0
- package/lib/utils/formatting/object-list-display.js +718 -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/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 +525 -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 +330 -0
- package/messages/definition.update.md +118 -0
- package/messages/mcp.serve.md +66 -0
- package/messages/object.describe.md +205 -0
- package/messages/object.list.md +463 -0
- package/messages/org.details.md +386 -0
- package/messages/org.reset.md +71 -0
- package/messages/profile.md +243 -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 +3267 -2148
- package/oclif.manifest.json +2829 -31
- package/package.json +104 -18
- 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,414 @@
|
|
|
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 { Flags } from '@salesforce/sf-plugins-core';
|
|
9
|
+
import { Messages, SfError } from '@salesforce/core';
|
|
10
|
+
import { CuneiformCommand, createAdapterStack } from '../../../base/cuneiform-command.js';
|
|
11
|
+
import { createConnectionFacade } from '../../../adapters/connection-facade.js';
|
|
12
|
+
import { UserReadinessService, REQUIRED_PERMISSION_SETS, REQUIRED_PERMISSION_SET_LABELS, } from '../../../services/UserReadinessService.js';
|
|
13
|
+
import { UserConfigurationService } from '../../../services/UserConfigurationService.js';
|
|
14
|
+
import { OrgInfoService } from '../../../services/OrgInfoService.js';
|
|
15
|
+
import { ProfilingRestClient } from '../../../adapters/rest/profiling-rest-client.js';
|
|
16
|
+
import { ServiceErrorCodes } from '../../../adapters/errors.js';
|
|
17
|
+
import { CUNEIFORM_NAMESPACE } from '../../../services/namespace-constants.js';
|
|
18
|
+
import { displayOutput } from '../../../utils/formatting/user-details-display.js';
|
|
19
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
20
|
+
const messages = Messages.loadMessages('@peernova/cuneiform-sf', 'user.details');
|
|
21
|
+
const accessMessages = Messages.loadMessages('@peernova/cuneiform-sf', 'cuneiform.access');
|
|
22
|
+
/**
|
|
23
|
+
* Displays authenticated user context and Cuneiform readiness status.
|
|
24
|
+
*
|
|
25
|
+
* Use this command to:
|
|
26
|
+
* - Verify user identity (ID, username, email, profile, role)
|
|
27
|
+
* - Check required Cuneiform permission set assignments
|
|
28
|
+
* - Validate Configuration Profile settings for API-only profiling
|
|
29
|
+
* - Diagnose readiness issues before running other Cuneiform commands
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```bash
|
|
33
|
+
* # Display user details and readiness status
|
|
34
|
+
* sf cuneiform user details --target-org myOrg
|
|
35
|
+
*
|
|
36
|
+
* # Output as JSON for programmatic use
|
|
37
|
+
* sf cuneiform user details --target-org myOrg --json
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
// eslint-disable-next-line sf-plugin/only-extend-SfCommand -- CuneiformCommand extends SfCommand with shared access gate logic
|
|
41
|
+
export default class Details extends CuneiformCommand {
|
|
42
|
+
static summary = messages.getMessage('summary');
|
|
43
|
+
static description = messages.getMessage('description');
|
|
44
|
+
static examples = messages.getMessages('examples');
|
|
45
|
+
// eslint-disable-next-line sf-plugin/spread-base-flags -- CuneiformCommand has no additional flags to spread
|
|
46
|
+
static flags = {
|
|
47
|
+
'target-org': Flags.requiredOrg({
|
|
48
|
+
summary: messages.getMessage('flags.target-org.summary'),
|
|
49
|
+
char: 'o',
|
|
50
|
+
required: true,
|
|
51
|
+
}),
|
|
52
|
+
'api-version': Flags.orgApiVersion({
|
|
53
|
+
summary: messages.getMessage('flags.api-version.summary'),
|
|
54
|
+
}),
|
|
55
|
+
configure: Flags.boolean({
|
|
56
|
+
summary: messages.getMessage('flags.configure.summary'),
|
|
57
|
+
char: 'c',
|
|
58
|
+
default: false,
|
|
59
|
+
exclusive: ['unconfigure'],
|
|
60
|
+
}),
|
|
61
|
+
unconfigure: Flags.boolean({
|
|
62
|
+
summary: messages.getMessage('flags.unconfigure.summary'),
|
|
63
|
+
hidden: true,
|
|
64
|
+
default: false,
|
|
65
|
+
exclusive: ['configure', 'dry-run'],
|
|
66
|
+
}),
|
|
67
|
+
'dry-run': Flags.boolean({
|
|
68
|
+
summary: messages.getMessage('flags.dry-run.summary'),
|
|
69
|
+
char: 'd',
|
|
70
|
+
default: false,
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
static skipAccessGate = true;
|
|
74
|
+
/**
|
|
75
|
+
* Builds the command result from service data.
|
|
76
|
+
*/
|
|
77
|
+
static buildResult(userInfo, readiness, orgIdentity, instanceUrl) {
|
|
78
|
+
const ADMIN_PS = REQUIRED_PERMISSION_SETS[0];
|
|
79
|
+
const adminAssignment = readiness.permissionSets.assignments.find((a) => a.name === ADMIN_PS);
|
|
80
|
+
const hasAdminAccess = readiness.isCuneiformInstalled && (adminAssignment?.isAssigned ?? false);
|
|
81
|
+
// Build permission set results. `isRequired` reflects the static fact
|
|
82
|
+
// that this permset is required for the feature — not whether it is
|
|
83
|
+
// currently missing. Use `!isAssigned` to identify unmet action items.
|
|
84
|
+
const permissionSets = REQUIRED_PERMISSION_SETS.map((name) => {
|
|
85
|
+
const assignment = readiness.permissionSets.assignments.find((a) => a.name === name);
|
|
86
|
+
return {
|
|
87
|
+
apiName: `${CUNEIFORM_NAMESPACE}__${name}`,
|
|
88
|
+
label: assignment?.label ?? REQUIRED_PERMISSION_SET_LABELS[name] ?? name,
|
|
89
|
+
isAssigned: assignment?.isAssigned ?? false,
|
|
90
|
+
isRequired: true,
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
// Build config profile result
|
|
94
|
+
const configProfile = {
|
|
95
|
+
isConfigured: readiness.configProfile.isConfigured,
|
|
96
|
+
profileLabel: readiness.configProfile.profileLabel ?? null,
|
|
97
|
+
apiOnlyProfilingEnabled: readiness.configProfile.isConfigured
|
|
98
|
+
? readiness.configProfile.apiOnlyProfilingEnabled ?? null
|
|
99
|
+
: null,
|
|
100
|
+
selfRegistrationEnabled: readiness.configProfile.isConfigured
|
|
101
|
+
? readiness.configProfile.selfRegistrationEnabled ?? null
|
|
102
|
+
: null,
|
|
103
|
+
};
|
|
104
|
+
// Build structured resolution guidance (extracted to reduce buildResult complexity)
|
|
105
|
+
const resolutionGuidance = Details.buildResolutionGuidance(readiness);
|
|
106
|
+
// Append no-config-profile guidance last (after permission and config checks)
|
|
107
|
+
if (readiness.isCuneiformInstalled && !readiness.configProfile.isConfigured) {
|
|
108
|
+
resolutionGuidance.push({
|
|
109
|
+
issue: messages.getMessage('guidance.noConfigProfile'),
|
|
110
|
+
action: messages.getMessage('guidance.noConfigProfileAction'),
|
|
111
|
+
persona: 'admin',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// Build org context
|
|
115
|
+
const orgContext = {
|
|
116
|
+
orgName: orgIdentity?.organizationName ?? '(unknown)',
|
|
117
|
+
orgId: orgIdentity?.organizationId ?? '(unknown)',
|
|
118
|
+
instanceUrl,
|
|
119
|
+
isSandbox: orgIdentity?.isSandbox ?? false,
|
|
120
|
+
orgType: orgIdentity?.organizationType ?? '(unknown)',
|
|
121
|
+
};
|
|
122
|
+
// Build links
|
|
123
|
+
const links = {
|
|
124
|
+
installationGuide: messages.getMessage('links.installationGuideUrl'),
|
|
125
|
+
documentation: messages.getMessage('links.verificationDocsUrl'),
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
orgContext,
|
|
129
|
+
user: {
|
|
130
|
+
id: userInfo.id,
|
|
131
|
+
username: userInfo.username,
|
|
132
|
+
email: userInfo.email,
|
|
133
|
+
profileName: userInfo.profileName,
|
|
134
|
+
roleName: userInfo.roleName,
|
|
135
|
+
},
|
|
136
|
+
prerequisites: {
|
|
137
|
+
cuneiformInstalled: readiness.isCuneiformInstalled,
|
|
138
|
+
adminAccessAssigned: hasAdminAccess,
|
|
139
|
+
allPassed: readiness.isCuneiformInstalled && hasAdminAccess,
|
|
140
|
+
},
|
|
141
|
+
readiness: {
|
|
142
|
+
isReady: readiness.isReady,
|
|
143
|
+
permissionSets,
|
|
144
|
+
configProfile,
|
|
145
|
+
},
|
|
146
|
+
resolutionGuidance,
|
|
147
|
+
links,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Builds resolution guidance items from readiness state.
|
|
152
|
+
* Extracted from buildResult to reduce cyclomatic complexity.
|
|
153
|
+
*/
|
|
154
|
+
static buildResolutionGuidance(readiness) {
|
|
155
|
+
const guidance = [];
|
|
156
|
+
if (!readiness.isCuneiformInstalled) {
|
|
157
|
+
guidance.push({
|
|
158
|
+
issue: messages.getMessage('guidance.cuneiformNotInstalled'),
|
|
159
|
+
action: messages.getMessage('guidance.cuneiformNotInstalledAction'),
|
|
160
|
+
persona: 'admin',
|
|
161
|
+
});
|
|
162
|
+
return guidance;
|
|
163
|
+
}
|
|
164
|
+
if (readiness.permissionSets.missingRequired.length > 0) {
|
|
165
|
+
// Prefer the canonical label from the assignments array (queried live
|
|
166
|
+
// from PermissionSet), falling back to the static constant when the
|
|
167
|
+
// assignment record is unavailable — keeps guidance text aligned with
|
|
168
|
+
// the permission-set display block.
|
|
169
|
+
const labels = readiness.permissionSets.missingRequired.map((name) => {
|
|
170
|
+
const assignment = readiness.permissionSets.assignments.find((a) => a.name === name);
|
|
171
|
+
return assignment?.label ?? REQUIRED_PERMISSION_SET_LABELS[name] ?? name;
|
|
172
|
+
});
|
|
173
|
+
if (labels.length === 1) {
|
|
174
|
+
guidance.push({
|
|
175
|
+
issue: messages.getMessage('guidance.missingPermissionSet', [labels[0]]),
|
|
176
|
+
action: messages.getMessage('guidance.missingPermissionSetAction'),
|
|
177
|
+
persona: 'admin',
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
guidance.push({
|
|
182
|
+
issue: messages.getMessage('guidance.missingPermissionSets'),
|
|
183
|
+
detail: labels,
|
|
184
|
+
action: messages.getMessage('guidance.missingPermissionSetsAction'),
|
|
185
|
+
persona: 'admin',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (readiness.configProfile.isConfigured && readiness.configProfile.apiOnlyProfilingEnabled === false) {
|
|
190
|
+
guidance.push({
|
|
191
|
+
issue: messages.getMessage('guidance.apiOnlyProfilingDisabled'),
|
|
192
|
+
action: messages.getMessage('guidance.apiOnlyProfilingDisabledAction'),
|
|
193
|
+
persona: 'admin',
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Only surface self-registration guidance when Admin PS is assigned —
|
|
197
|
+
// if the user isn't an administrator, self-registration isn't relevant yet.
|
|
198
|
+
const hasAdminPSAssigned = readiness.permissionSets.assignments.some((a) => a.name === 'Cuneiform_for_CRM_PRO_Administrative_User' && a.isAssigned);
|
|
199
|
+
if (hasAdminPSAssigned &&
|
|
200
|
+
readiness.configProfile.isConfigured &&
|
|
201
|
+
readiness.configProfile.selfRegistrationEnabled === false) {
|
|
202
|
+
guidance.push({
|
|
203
|
+
issue: messages.getMessage('guidance.selfRegistrationDisabled'),
|
|
204
|
+
action: messages.getMessage('guidance.selfRegistrationDisabledAction'),
|
|
205
|
+
persona: 'admin',
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return guidance;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Maps the service-level UserConfigurationResult to the command-level ConfigurationResult.
|
|
212
|
+
*/
|
|
213
|
+
static mapConfigurationResult(serviceResult, isDryRun) {
|
|
214
|
+
const actions = serviceResult.actions.map((action) => ({
|
|
215
|
+
type: action.type,
|
|
216
|
+
target: action.target,
|
|
217
|
+
targetLabel: action.targetLabel ?? action.target,
|
|
218
|
+
status: isDryRun ? 'planned' : action.status,
|
|
219
|
+
message: action.message,
|
|
220
|
+
}));
|
|
221
|
+
// Extract deployment job ID from action details
|
|
222
|
+
const deployAction = serviceResult.actions.find((a) => a.type === 'enableApiOnlyProfiling' && a.details?.jobId);
|
|
223
|
+
return {
|
|
224
|
+
dryRun: isDryRun,
|
|
225
|
+
// CLI-3624: surface the service-layer previousState so consumers (and the
|
|
226
|
+
// NUT phase 6 agreement assertion) can verify the CLI-3418 readiness-threading
|
|
227
|
+
// contract through the command JSON output. userId/username are intentionally
|
|
228
|
+
// not surfaced — they already live on UserDetailsResult.user.
|
|
229
|
+
previousState: {
|
|
230
|
+
hasRequiredPermissionSets: serviceResult.previousState.hasRequiredPermissionSets,
|
|
231
|
+
missingPermissionSets: serviceResult.previousState.missingPermissionSets,
|
|
232
|
+
apiOnlyProfilingEnabled: serviceResult.previousState.apiOnlyProfilingEnabled,
|
|
233
|
+
profileDeveloperName: serviceResult.previousState.profileDeveloperName,
|
|
234
|
+
},
|
|
235
|
+
actions,
|
|
236
|
+
summary: {
|
|
237
|
+
changesRequired: serviceResult.summary.changesRequired,
|
|
238
|
+
changesApplied: serviceResult.summary.changesApplied,
|
|
239
|
+
changesFailed: serviceResult.summary.changesFailed,
|
|
240
|
+
},
|
|
241
|
+
deploymentJobId: deployAction?.details?.jobId,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Executes the user details command.
|
|
246
|
+
*
|
|
247
|
+
* @returns UserDetailsResult with user identity and readiness status
|
|
248
|
+
*/
|
|
249
|
+
async run() {
|
|
250
|
+
const { flags } = await this.parse(Details);
|
|
251
|
+
// --dry-run implies --configure
|
|
252
|
+
const shouldConfigure = flags.configure || flags['dry-run'];
|
|
253
|
+
const shouldUnconfigure = flags.unconfigure;
|
|
254
|
+
const isDryRun = flags['dry-run'];
|
|
255
|
+
const connection = flags['target-org'].getConnection(flags['api-version']);
|
|
256
|
+
const orgIdentifier = flags['target-org'].getUsername() ?? 'unknown';
|
|
257
|
+
const facade = createConnectionFacade(connection);
|
|
258
|
+
const userId = await this.connectToOrg(facade, orgIdentifier);
|
|
259
|
+
const { soqlAdapter, restAdapter } = createAdapterStack(facade);
|
|
260
|
+
const restClient = new ProfilingRestClient(restAdapter);
|
|
261
|
+
const userReadinessService = new UserReadinessService({ soqlAdapter, restClient });
|
|
262
|
+
const orgData = await this.fetchOrgData(facade, soqlAdapter, userReadinessService, userId, orgIdentifier);
|
|
263
|
+
const { userInfo, orgIdentity } = orgData;
|
|
264
|
+
let { readiness } = orgData;
|
|
265
|
+
// Build diagnostic result
|
|
266
|
+
const result = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
|
|
267
|
+
// Environment gate: block configure/unconfigure in production orgs
|
|
268
|
+
if ((shouldConfigure || shouldUnconfigure) && orgIdentity) {
|
|
269
|
+
const orgType = OrgInfoService.classifyOrgType(orgIdentity.isSandbox, orgIdentity.organizationType);
|
|
270
|
+
if (!UserReadinessService.isConfigureAllowed(orgType)) {
|
|
271
|
+
const sfError = new SfError(accessMessages.getMessage('error.environmentConfigureBlocked'));
|
|
272
|
+
sfError.code = ServiceErrorCodes.ENVIRONMENT_CONFIGURE_BLOCKED;
|
|
273
|
+
throw sfError;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Run configuration or unconfiguration if requested
|
|
277
|
+
if (shouldConfigure) {
|
|
278
|
+
const configData = await this.runConfigurePhase(result, facade, soqlAdapter, restAdapter, userReadinessService, userId, isDryRun, readiness);
|
|
279
|
+
result.configuration = Details.mapConfigurationResult(configData, isDryRun);
|
|
280
|
+
if (!isDryRun && configData.summary.changesApplied > 0) {
|
|
281
|
+
// Refetch readiness to show post-change state (Rec #1)
|
|
282
|
+
const updatedReadiness = await userReadinessService.checkReadiness(userId);
|
|
283
|
+
if (updatedReadiness.success) {
|
|
284
|
+
readiness = updatedReadiness.data;
|
|
285
|
+
const updatedResult = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
|
|
286
|
+
result.readiness = updatedResult.readiness;
|
|
287
|
+
result.resolutionGuidance = updatedResult.resolutionGuidance;
|
|
288
|
+
result.links = updatedResult.links;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (shouldUnconfigure) {
|
|
293
|
+
const unconfigData = await this.runUnconfigurePhase(result, facade, soqlAdapter, restAdapter, userReadinessService, userId);
|
|
294
|
+
result.configuration = Details.mapConfigurationResult(unconfigData, false);
|
|
295
|
+
if (unconfigData.summary.changesApplied > 0) {
|
|
296
|
+
// Refetch readiness to show post-change state (Rec #1)
|
|
297
|
+
const updatedReadiness = await userReadinessService.checkReadiness(userId);
|
|
298
|
+
if (updatedReadiness.success) {
|
|
299
|
+
readiness = updatedReadiness.data;
|
|
300
|
+
const updatedResult = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
|
|
301
|
+
result.readiness = updatedResult.readiness;
|
|
302
|
+
result.resolutionGuidance = updatedResult.resolutionGuidance;
|
|
303
|
+
result.links = updatedResult.links;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// Display human-readable output (delegated to display module)
|
|
308
|
+
displayOutput(this.log.bind(this), userInfo, readiness, result);
|
|
309
|
+
return result;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Establishes connection to the Salesforce org and retrieves the current user ID.
|
|
313
|
+
* Wraps the identity call with a user-friendly error message on failure.
|
|
314
|
+
*/
|
|
315
|
+
async connectToOrg(facade, orgIdentifier) {
|
|
316
|
+
try {
|
|
317
|
+
const identity = await facade.identity();
|
|
318
|
+
return identity.user_id;
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
322
|
+
this.error(messages.getMessage('errors.orgConnectionFailed', [orgIdentifier, orgIdentifier]) + `\n\nDetail: ${detail}`, { code: 'E2001' });
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Fetches org identity, user info, and readiness in parallel.
|
|
327
|
+
* Wraps the API calls with a user-friendly error message on failure.
|
|
328
|
+
*/
|
|
329
|
+
async fetchOrgData(facade, soqlAdapter, userReadinessService, userId, orgIdentifier) {
|
|
330
|
+
const orgInfoService = new OrgInfoService({ connectionFacade: facade, soqlAdapter });
|
|
331
|
+
this.spinner.start(messages.getMessage('info.fetchingOrgData'));
|
|
332
|
+
let orgIdentityResult;
|
|
333
|
+
let userInfoResult;
|
|
334
|
+
let readinessResult;
|
|
335
|
+
try {
|
|
336
|
+
[orgIdentityResult, userInfoResult, readinessResult] = await Promise.all([
|
|
337
|
+
orgInfoService.getOrgIdentity(),
|
|
338
|
+
userReadinessService.getUserInfo(userId),
|
|
339
|
+
userReadinessService.checkReadiness(userId),
|
|
340
|
+
]);
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
this.spinner.stop();
|
|
344
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
345
|
+
this.error(messages.getMessage('errors.orgApiFailed', [orgIdentifier, orgIdentifier, orgIdentifier]) +
|
|
346
|
+
`\n\nDetail: ${detail}`, { code: 'E3001' });
|
|
347
|
+
}
|
|
348
|
+
this.spinner.stop();
|
|
349
|
+
if (!userInfoResult.success) {
|
|
350
|
+
this.error(userInfoResult.message ?? messages.getMessage('errors.userInfoFailed'), {
|
|
351
|
+
code: userInfoResult.errorCode,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
if (!readinessResult.success) {
|
|
355
|
+
this.error(readinessResult.message ?? messages.getMessage('errors.readinessFailed'), {
|
|
356
|
+
code: readinessResult.errorCode,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
return {
|
|
360
|
+
userInfo: userInfoResult.data,
|
|
361
|
+
readiness: readinessResult.data,
|
|
362
|
+
orgIdentity: orgIdentityResult.success ? orgIdentityResult.data : undefined,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Runs the --configure phase: assigns permission sets and enables API-only profiling.
|
|
367
|
+
*
|
|
368
|
+
* Threads the outer-fetched `readiness` snapshot into `configure()` so the displayed
|
|
369
|
+
* readiness block and the configure `previousState` block report the same
|
|
370
|
+
* `apiOnlyProfilingEnabled` value (CLI-3418).
|
|
371
|
+
*/
|
|
372
|
+
async runConfigurePhase(result, _facade, soqlAdapter, restAdapter, userReadinessService, userId, isDryRun, readiness) {
|
|
373
|
+
if (!result.prerequisites.cuneiformInstalled) {
|
|
374
|
+
this.error(messages.getMessage('errors.cuneiformNotInstalled'));
|
|
375
|
+
}
|
|
376
|
+
const configService = new UserConfigurationService({
|
|
377
|
+
soqlAdapter,
|
|
378
|
+
restApiAdapter: restAdapter,
|
|
379
|
+
userReadinessService,
|
|
380
|
+
});
|
|
381
|
+
this.spinner.start(isDryRun ? messages.getMessage('info.dryRunStart') : messages.getMessage('info.configureStart'));
|
|
382
|
+
const configResult = await configService.configure(userId, { dryRun: isDryRun, readiness });
|
|
383
|
+
this.spinner.stop();
|
|
384
|
+
if (!configResult.success) {
|
|
385
|
+
this.error(configResult.message ?? messages.getMessage('errors.configurationFailed'), {
|
|
386
|
+
code: configResult.errorCode,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
return configResult.data;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Runs the --unconfigure phase: unassigns permission sets and disables API-only profiling.
|
|
393
|
+
*/
|
|
394
|
+
async runUnconfigurePhase(result, _facade, soqlAdapter, restAdapter, userReadinessService, userId) {
|
|
395
|
+
if (!result.prerequisites.cuneiformInstalled) {
|
|
396
|
+
this.error(messages.getMessage('errors.cuneiformNotInstalled'));
|
|
397
|
+
}
|
|
398
|
+
const configService = new UserConfigurationService({
|
|
399
|
+
soqlAdapter,
|
|
400
|
+
restApiAdapter: restAdapter,
|
|
401
|
+
userReadinessService,
|
|
402
|
+
});
|
|
403
|
+
this.spinner.start(messages.getMessage('info.unconfigureStart'));
|
|
404
|
+
const unconfigResult = await configService.unconfigure(userId);
|
|
405
|
+
this.spinner.stop();
|
|
406
|
+
if (!unconfigResult.success) {
|
|
407
|
+
this.error(unconfigResult.message ?? messages.getMessage('errors.configurationFailed'), {
|
|
408
|
+
code: unconfigResult.errorCode,
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
return unconfigResult.data;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cuneiform/user/details.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of Salesforce namespace prefixes to product names.
|
|
3
|
+
*
|
|
4
|
+
* This map enables identification of installed Salesforce products by their
|
|
5
|
+
* namespace prefix. Managed packages use namespace prefixes on custom objects
|
|
6
|
+
* (e.g., `SBQQ__Quote__c` indicates Salesforce CPQ is installed).
|
|
7
|
+
*
|
|
8
|
+
* @see docs/knowledge/salesforce/namespaces.md for comprehensive documentation
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const namespace = 'SBQQ__';
|
|
13
|
+
* const product = NAMESPACE_PRODUCT_MAP[namespace];
|
|
14
|
+
* console.log(product); // 'Salesforce CPQ'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const NAMESPACE_PRODUCT_MAP: Readonly<Record<string, string>>;
|
|
18
|
+
/**
|
|
19
|
+
* Namespace-to-cloud name mapping for package-based cloud detection.
|
|
20
|
+
* Keys are namespace prefixes without trailing underscores.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CLOUD_NAMESPACE_MAP: Readonly<Record<string, string>>;
|
|
23
|
+
/**
|
|
24
|
+
* The namespace prefix used by Cuneiform for CRM.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CUNEIFORM_NAMESPACE: "pnova";
|
|
27
|
+
/**
|
|
28
|
+
* The namespace prefix with trailing underscores (for object/field references).
|
|
29
|
+
*/
|
|
30
|
+
export declare const CUNEIFORM_NAMESPACE_PREFIX: "pnova__";
|
|
31
|
+
/**
|
|
32
|
+
* Canonical Subscriber Package names for the main Cuneiform managed package.
|
|
33
|
+
*
|
|
34
|
+
* Used to disambiguate the main package from extension packages that share the
|
|
35
|
+
* `pnova` namespace (e.g., 'Cuneiform for CRM: Data Health Reports'). Extension
|
|
36
|
+
* packages follow a `Main: Subtitle` naming convention.
|
|
37
|
+
*
|
|
38
|
+
* Includes the current marketing name and historical labels so orgs upgraded
|
|
39
|
+
* across renames continue to resolve correctly.
|
|
40
|
+
*/
|
|
41
|
+
export declare const CUNEIFORM_MAIN_PACKAGE_NAMES: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* Gets the product name for a given namespace prefix.
|
|
44
|
+
*
|
|
45
|
+
* @param namespace - The namespace prefix (with or without trailing underscores)
|
|
46
|
+
* @returns The product name or undefined if not found
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* getProductName('SBQQ__'); // 'Salesforce CPQ'
|
|
51
|
+
* getProductName('SBQQ'); // 'Salesforce CPQ' (normalizes input)
|
|
52
|
+
* getProductName('Unknown__'); // undefined
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function getProductName(namespace: string): string | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Checks if a namespace belongs to Cuneiform.
|
|
58
|
+
*
|
|
59
|
+
* @param namespace - The namespace to check
|
|
60
|
+
* @returns True if the namespace is Cuneiform's namespace
|
|
61
|
+
*/
|
|
62
|
+
export declare function isCuneiformNamespace(namespace: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Extracts unique namespaces from a list of object API names.
|
|
65
|
+
*
|
|
66
|
+
* @param objectNames - Array of Salesforce object API names
|
|
67
|
+
* @returns Array of unique namespace prefixes found
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* extractNamespaces(['SBQQ__Quote__c', 'Account', 'npsp__Donation__c']);
|
|
72
|
+
* // Returns: ['SBQQ__', 'npsp__']
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function extractNamespaces(objectNames: string[]): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Classification categories for Salesforce namespace prefixes.
|
|
78
|
+
*
|
|
79
|
+
* - `standard` - No namespace (platform-native objects like Account, Contact)
|
|
80
|
+
* - `industry` - Salesforce Industry Cloud namespaces (Health Cloud, FSC, etc.)
|
|
81
|
+
* - `managed` - Known managed packages (CPQ, NPSP, Cuneiform, etc.)
|
|
82
|
+
* - `custom` - Unknown/unrecognized namespace prefixes
|
|
83
|
+
*/
|
|
84
|
+
export type NamespaceCategory = 'standard' | 'industry' | 'managed' | 'custom';
|
|
85
|
+
/**
|
|
86
|
+
* Categorizes a Salesforce namespace prefix into one of four categories:
|
|
87
|
+
* standard, industry, managed, or custom.
|
|
88
|
+
*
|
|
89
|
+
* @param namespace - The namespace prefix (with or without trailing underscores).
|
|
90
|
+
* Null, undefined, or empty string indicates a standard (platform-native) object.
|
|
91
|
+
* @returns The category classification for the namespace
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* categorizeNamespace(null); // 'standard'
|
|
96
|
+
* categorizeNamespace(''); // 'standard'
|
|
97
|
+
* categorizeNamespace('FinServ__'); // 'industry'
|
|
98
|
+
* categorizeNamespace('SBQQ__'); // 'managed'
|
|
99
|
+
* categorizeNamespace('MyCustomPkg__'); // 'custom'
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function categorizeNamespace(namespace: string | null | undefined): NamespaceCategory;
|