@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,134 @@
|
|
|
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 { ServiceErrorCodes } from '../adapters/errors.js';
|
|
10
|
+
/**
|
|
11
|
+
* Error codes for profile request delete operations.
|
|
12
|
+
* Re-exported from ServiceErrorCodes for convenience.
|
|
13
|
+
*/
|
|
14
|
+
export const ProfileRequestDeleteErrorCodes = {
|
|
15
|
+
DELETE_FAILED: ServiceErrorCodes.REQUEST_DELETE_FAILED,
|
|
16
|
+
INVALID_IDS: ServiceErrorCodes.REQUEST_INVALID_IDS,
|
|
17
|
+
NO_DELETABLE: ServiceErrorCodes.REQUEST_NO_DELETABLE,
|
|
18
|
+
PARTIAL_FAILURE: ServiceErrorCodes.REQUEST_DELETE_PARTIAL_FAILURE,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Orchestrates deletion of profiling requests.
|
|
22
|
+
*
|
|
23
|
+
* Delegates to ProfileRequestService for the actual delete logic.
|
|
24
|
+
* Manages user-facing concerns: confirmation prompts, dry-run previews,
|
|
25
|
+
* and timing metadata.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const operation = new ProfileRequestDeleteOperation(profileRequestService);
|
|
30
|
+
* const result = await operation.execute({ all: true, dryRun: true });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class ProfileRequestDeleteOperation {
|
|
34
|
+
profileRequestService;
|
|
35
|
+
logger;
|
|
36
|
+
constructor(profileRequestService, logger) {
|
|
37
|
+
this.profileRequestService = profileRequestService;
|
|
38
|
+
this.logger = logger;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates the empty delete result structure.
|
|
42
|
+
*/
|
|
43
|
+
static emptyResult(dryRun) {
|
|
44
|
+
return {
|
|
45
|
+
deleted: [],
|
|
46
|
+
failed: [],
|
|
47
|
+
dryRun,
|
|
48
|
+
totalDeletable: 0,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Executes the profile request delete operation.
|
|
53
|
+
*
|
|
54
|
+
* @param options - Delete operation options
|
|
55
|
+
* @returns ServiceResult containing the delete outcome
|
|
56
|
+
*/
|
|
57
|
+
async execute(options) {
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
const dryRun = options.dryRun ?? false;
|
|
60
|
+
const emptyResult = ProfileRequestDeleteOperation.emptyResult(dryRun);
|
|
61
|
+
try {
|
|
62
|
+
this.logger?.log('Starting profile request delete operation');
|
|
63
|
+
// Validate mutually exclusive options
|
|
64
|
+
const hasAll = options.all === true;
|
|
65
|
+
const hasIds = options.requestIds !== undefined && options.requestIds.length > 0;
|
|
66
|
+
if (hasAll && hasIds) {
|
|
67
|
+
return createFailureResult(emptyResult, ProfileRequestDeleteErrorCodes.INVALID_IDS, 'The --all and --request-ids flags are mutually exclusive. Provide one or the other.', { metadata: { duration: Date.now() - startTime } });
|
|
68
|
+
}
|
|
69
|
+
if (!hasAll && !hasIds) {
|
|
70
|
+
return createFailureResult(emptyResult, ProfileRequestDeleteErrorCodes.INVALID_IDS, 'You must provide either --all or --request-ids to specify which requests to delete.', { metadata: { duration: Date.now() - startTime } });
|
|
71
|
+
}
|
|
72
|
+
const serviceOptions = {
|
|
73
|
+
all: options.all,
|
|
74
|
+
requestIds: options.requestIds,
|
|
75
|
+
};
|
|
76
|
+
const needsConfirmation = !dryRun && !options.noPrompt && !!options.onConfirm;
|
|
77
|
+
// Discovery: dry-run first when confirmation is needed, or honour explicit dryRun
|
|
78
|
+
const discoveryResult = await this.profileRequestService.deleteRequests({
|
|
79
|
+
...serviceOptions,
|
|
80
|
+
dryRun: dryRun || needsConfirmation,
|
|
81
|
+
});
|
|
82
|
+
if (!discoveryResult.success) {
|
|
83
|
+
// For partial failures, notify caller so the spinner shows the correct count
|
|
84
|
+
if (discoveryResult.errorCode === ProfileRequestDeleteErrorCodes.PARTIAL_FAILURE) {
|
|
85
|
+
options.onDeletableFound?.(discoveryResult.data.totalDeletable);
|
|
86
|
+
}
|
|
87
|
+
// Preserve result.data so callers can access deleted/failed arrays
|
|
88
|
+
return createFailureResult(discoveryResult.data, discoveryResult.errorCode ?? ProfileRequestDeleteErrorCodes.DELETE_FAILED, discoveryResult.message ?? 'Delete operation failed', {
|
|
89
|
+
metadata: { duration: Date.now() - startTime },
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const discoveryData = discoveryResult.data;
|
|
93
|
+
// Notify caller about deletable requests found
|
|
94
|
+
options.onDeletableFound?.(discoveryData.totalDeletable);
|
|
95
|
+
// Prompt user for confirmation before executing
|
|
96
|
+
if (needsConfirmation) {
|
|
97
|
+
return await this.executeWithConfirmation(serviceOptions, discoveryData.totalDeletable, emptyResult, options, startTime);
|
|
98
|
+
}
|
|
99
|
+
// No confirmation needed (dryRun or noPrompt) — return discovery result directly
|
|
100
|
+
const duration = Date.now() - startTime;
|
|
101
|
+
this.logger?.log(`Delete operation completed in ${duration}ms`);
|
|
102
|
+
return createSuccessResult(discoveryData, {
|
|
103
|
+
message: discoveryResult.message,
|
|
104
|
+
metadata: { duration },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
109
|
+
this.logger?.log(`Delete operation failed: ${errorMessage}`);
|
|
110
|
+
return createFailureResult(emptyResult, ProfileRequestDeleteErrorCodes.DELETE_FAILED, errorMessage, {
|
|
111
|
+
metadata: { duration: Date.now() - startTime },
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Prompts for confirmation then executes the actual deletion.
|
|
117
|
+
* Extracted to keep execute() within cyclomatic complexity limits.
|
|
118
|
+
*/
|
|
119
|
+
async executeWithConfirmation(serviceOptions, totalDeletable, emptyResult, options, startTime) {
|
|
120
|
+
const confirmed = await options.onConfirm(totalDeletable);
|
|
121
|
+
if (!confirmed) {
|
|
122
|
+
this.logger?.log('Delete operation aborted by user');
|
|
123
|
+
return createSuccessResult({ ...emptyResult, totalDeletable }, { message: 'Deletion aborted by user.', metadata: { duration: Date.now() - startTime, userCancelled: true } });
|
|
124
|
+
}
|
|
125
|
+
const executeResult = await this.profileRequestService.deleteRequests({ ...serviceOptions, dryRun: false });
|
|
126
|
+
if (!executeResult.success) {
|
|
127
|
+
return createFailureResult(executeResult.data, executeResult.errorCode ?? ProfileRequestDeleteErrorCodes.DELETE_FAILED, executeResult.message ?? 'Delete operation failed', { metadata: { duration: Date.now() - startTime } });
|
|
128
|
+
}
|
|
129
|
+
const duration = Date.now() - startTime;
|
|
130
|
+
this.logger?.log(`Delete operation completed in ${duration}ms`);
|
|
131
|
+
return createSuccessResult(executeResult.data, { message: executeResult.message, metadata: { duration } });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=ProfileRequestDeleteOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileRequestDeleteOperation.js","sourceRoot":"","sources":["../../src/operations/ProfileRequestDeleteOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ServiceResult } from '../models/service-result.js';
|
|
2
|
+
import { ProfileRequestService } from '../services/ProfileRequestService.js';
|
|
3
|
+
import type { IProfileRequest, ProfileRequestStatus } from '../models/profile-request-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for the profile request list operation.
|
|
6
|
+
*/
|
|
7
|
+
export type ProfileRequestListOperationOptions = {
|
|
8
|
+
/** Filter by request status */
|
|
9
|
+
status?: ProfileRequestStatus;
|
|
10
|
+
/** Pagination limit (default 25, max 200) */
|
|
11
|
+
limit?: number;
|
|
12
|
+
/** Pagination offset */
|
|
13
|
+
offset?: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Error codes for profile request list operations.
|
|
17
|
+
* Re-exported from ServiceErrorCodes for convenience.
|
|
18
|
+
*/
|
|
19
|
+
export declare const ProfileRequestListErrorCodes: {
|
|
20
|
+
readonly QUERY_FAILED: "E4900";
|
|
21
|
+
readonly OPERATION_FAILED: "E4900";
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Orchestrates listing profiling requests.
|
|
25
|
+
*
|
|
26
|
+
* Thin orchestrator that delegates to ProfileRequestService.listRequests()
|
|
27
|
+
* and tracks operation timing.
|
|
28
|
+
*/
|
|
29
|
+
export declare class ProfileRequestListOperation {
|
|
30
|
+
private readonly service;
|
|
31
|
+
constructor(service: ProfileRequestService);
|
|
32
|
+
/**
|
|
33
|
+
* Executes the profile request list operation.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Filtering and pagination options
|
|
36
|
+
* @returns ServiceResult containing an array of IProfileRequest
|
|
37
|
+
*/
|
|
38
|
+
execute(options: ProfileRequestListOperationOptions): Promise<ServiceResult<IProfileRequest[]>>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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 { ServiceErrorCodes } from '../adapters/errors.js';
|
|
10
|
+
/**
|
|
11
|
+
* Error codes for profile request list operations.
|
|
12
|
+
* Re-exported from ServiceErrorCodes for convenience.
|
|
13
|
+
*/
|
|
14
|
+
export const ProfileRequestListErrorCodes = {
|
|
15
|
+
QUERY_FAILED: ServiceErrorCodes.REQUEST_LIST_QUERY_FAILED,
|
|
16
|
+
OPERATION_FAILED: ServiceErrorCodes.REQUEST_LIST_QUERY_FAILED,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Orchestrates listing profiling requests.
|
|
20
|
+
*
|
|
21
|
+
* Thin orchestrator that delegates to ProfileRequestService.listRequests()
|
|
22
|
+
* and tracks operation timing.
|
|
23
|
+
*/
|
|
24
|
+
export class ProfileRequestListOperation {
|
|
25
|
+
service;
|
|
26
|
+
constructor(service) {
|
|
27
|
+
this.service = service;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Executes the profile request list operation.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Filtering and pagination options
|
|
33
|
+
* @returns ServiceResult containing an array of IProfileRequest
|
|
34
|
+
*/
|
|
35
|
+
async execute(options) {
|
|
36
|
+
const startTime = Date.now();
|
|
37
|
+
try {
|
|
38
|
+
const result = await this.service.listRequests({
|
|
39
|
+
status: options.status,
|
|
40
|
+
limit: options.limit,
|
|
41
|
+
offset: options.offset,
|
|
42
|
+
});
|
|
43
|
+
if (!result.success) {
|
|
44
|
+
return createFailureResult([], result.errorCode ?? ProfileRequestListErrorCodes.QUERY_FAILED, result.message, {
|
|
45
|
+
metadata: { duration: Date.now() - startTime },
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return createSuccessResult(result.data, {
|
|
49
|
+
message: result.message,
|
|
50
|
+
metadata: { duration: Date.now() - startTime },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
55
|
+
return createFailureResult([], ProfileRequestListErrorCodes.OPERATION_FAILED, errorMessage, {
|
|
56
|
+
metadata: { duration: Date.now() - startTime },
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ProfileRequestListOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileRequestListOperation.js","sourceRoot":"","sources":["../../src/operations/ProfileRequestListOperation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAsB,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAG3G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAgB1D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,YAAY,EAAE,iBAAiB,CAAC,yBAAyB;IACzD,gBAAgB,EAAE,iBAAiB,CAAC,yBAAyB;CACrD,CAAC;AAEX;;;;;GAKG;AACH,MAAM,OAAO,2BAA2B;IACF;IAApC,YAAoC,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAEtE;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,OAA2C;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,IAAI,4BAA4B,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE;oBAC5G,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;iBAC/C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE;gBACtC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5E,OAAO,mBAAmB,CAAC,EAAE,EAAE,4BAA4B,CAAC,gBAAgB,EAAE,YAAY,EAAE;gBAC1F,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { type ServiceResult } from '../models/service-result.js';
|
|
2
|
+
import { ProfilingDefinitionService } from '../services/ProfilingDefinitionService.js';
|
|
3
|
+
import { ProfilingSummaryService, type PurgeSummaryRecord, type SummaryDeleteProgressEvent } from '../services/ProfilingSummaryService.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for the summary purge operation.
|
|
6
|
+
*/
|
|
7
|
+
export type SummaryPurgeOptions = {
|
|
8
|
+
/** Target org username or alias */
|
|
9
|
+
targetOrg: string;
|
|
10
|
+
/** Specific summary IDs to delete — exclusive mode */
|
|
11
|
+
ids?: string[];
|
|
12
|
+
/** Purge all summaries (can be combined with filter flags) */
|
|
13
|
+
all?: boolean;
|
|
14
|
+
/** Filter by target object API name (resolves through definitions) */
|
|
15
|
+
objectName?: string;
|
|
16
|
+
/** Filter by definition category */
|
|
17
|
+
category?: string;
|
|
18
|
+
/** Filter by definition active status */
|
|
19
|
+
isActive?: boolean;
|
|
20
|
+
/** Maximum number of summaries to process */
|
|
21
|
+
limit?: number;
|
|
22
|
+
/** Only delete non-latest summaries (preserve latest per definition) */
|
|
23
|
+
prune?: boolean;
|
|
24
|
+
/** Preview mode — categorize without deleting */
|
|
25
|
+
dryRun?: boolean;
|
|
26
|
+
/** Skip interactive confirmation prompt */
|
|
27
|
+
noPrompt?: boolean;
|
|
28
|
+
/** Callback when summaries are found */
|
|
29
|
+
onSummariesFound?: (count: number) => void;
|
|
30
|
+
/** Callback for user confirmation before deletion */
|
|
31
|
+
onPreviewReady?: (preview: SummaryPurgePreview) => Promise<boolean>;
|
|
32
|
+
/** Progress callback for per-summary status updates */
|
|
33
|
+
onProgress?: (event: SummaryDeleteProgressEvent) => void;
|
|
34
|
+
/** Optional logger */
|
|
35
|
+
logger?: Console;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Preview data for user confirmation.
|
|
39
|
+
*/
|
|
40
|
+
export type SummaryPurgePreview = {
|
|
41
|
+
/** Summaries eligible for deletion */
|
|
42
|
+
deletable: PurgeSummaryRecord[];
|
|
43
|
+
/** Summaries skipped due to non-terminal status */
|
|
44
|
+
skippedByStatus: PurgeSummaryRecord[];
|
|
45
|
+
/** Summaries skipped because they are the latest (prune mode) */
|
|
46
|
+
skippedByPrune: PurgeSummaryRecord[];
|
|
47
|
+
/** Total summaries matched */
|
|
48
|
+
total: number;
|
|
49
|
+
/** Whether prune mode is active */
|
|
50
|
+
pruneMode: boolean;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Result of a summary purge operation.
|
|
54
|
+
*/
|
|
55
|
+
export type SummaryPurgeResult = {
|
|
56
|
+
/** Number of summaries successfully deleted */
|
|
57
|
+
deleted: number;
|
|
58
|
+
/** Number of summaries skipped */
|
|
59
|
+
skipped: number;
|
|
60
|
+
/** Number of summaries that failed to delete */
|
|
61
|
+
failed: number;
|
|
62
|
+
/** Total number of summaries processed */
|
|
63
|
+
total: number;
|
|
64
|
+
/** Summaries skipped by non-terminal status */
|
|
65
|
+
skippedByStatus: PurgeSummaryRecord[];
|
|
66
|
+
/** Summaries skipped by prune (latest preserved) */
|
|
67
|
+
skippedByPrune: PurgeSummaryRecord[];
|
|
68
|
+
/** Whether the operation was cancelled by the user */
|
|
69
|
+
cancelled?: boolean;
|
|
70
|
+
/** Whether dry-run mode was active */
|
|
71
|
+
dryRun?: boolean;
|
|
72
|
+
/** Dry-run preview data */
|
|
73
|
+
preview?: SummaryPurgePreview;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Error codes for summary purge operations.
|
|
77
|
+
* Re-exported from ServiceErrorCodes (E4510-E4517) for convenience.
|
|
78
|
+
*/
|
|
79
|
+
export declare const SummaryPurgeErrorCodes: {
|
|
80
|
+
readonly NO_SELECTION_CRITERIA: "E4510";
|
|
81
|
+
readonly MUTUALLY_EXCLUSIVE: "E4511";
|
|
82
|
+
readonly QUERY_FAILED: "E4512";
|
|
83
|
+
readonly NO_ELIGIBLE_SUMMARIES: "E4513";
|
|
84
|
+
readonly DELETE_FAILED: "E4514";
|
|
85
|
+
readonly USER_CANCELLED: "E4515";
|
|
86
|
+
readonly OPERATION_FAILED: "E4516";
|
|
87
|
+
readonly INVALID_IDS: "E4517";
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Orchestrates purging of profiling summaries.
|
|
91
|
+
*
|
|
92
|
+
* Supports two selection modes:
|
|
93
|
+
* 1. ID mode: Delete specific summaries by ID (exclusive)
|
|
94
|
+
* 2. Filter mode: Query definitions by filters, then resolve their summaries
|
|
95
|
+
*
|
|
96
|
+
* Two-level status filtering:
|
|
97
|
+
* - Definition level: Exclude definitions with non-terminal statuses
|
|
98
|
+
* - Summary level: Only delete summaries with terminal statuses
|
|
99
|
+
*
|
|
100
|
+
* Optional prune mode (--prune): Only delete non-latest summaries.
|
|
101
|
+
*/
|
|
102
|
+
export declare class SummaryPurgeOperation {
|
|
103
|
+
private readonly definitionService;
|
|
104
|
+
private readonly summaryService;
|
|
105
|
+
private readonly logger?;
|
|
106
|
+
constructor(definitionService: ProfilingDefinitionService, summaryService: ProfilingSummaryService, logger?: Console | undefined);
|
|
107
|
+
/**
|
|
108
|
+
* Creates the empty result structure.
|
|
109
|
+
*/
|
|
110
|
+
private static emptyResult;
|
|
111
|
+
/**
|
|
112
|
+
* Checks if filter flags are specified.
|
|
113
|
+
*/
|
|
114
|
+
private static hasFilterFlags;
|
|
115
|
+
/**
|
|
116
|
+
* Executes the summary purge operation.
|
|
117
|
+
*/
|
|
118
|
+
execute(options: SummaryPurgeOptions): Promise<ServiceResult<SummaryPurgeResult>>;
|
|
119
|
+
/**
|
|
120
|
+
* Executes purge in ID mode: delete specific summaries by ID.
|
|
121
|
+
*
|
|
122
|
+
* Queries summaries directly by ID (O(requested) instead of O(all summaries)).
|
|
123
|
+
* Terminal status filter is applied in the SOQL query.
|
|
124
|
+
*/
|
|
125
|
+
private executeIdMode;
|
|
126
|
+
/**
|
|
127
|
+
* Executes purge in filter mode: query definitions by filters, then resolve summaries.
|
|
128
|
+
*/
|
|
129
|
+
private executeFilterMode;
|
|
130
|
+
/**
|
|
131
|
+
* Handles confirmation, dry-run, and deletion execution.
|
|
132
|
+
*/
|
|
133
|
+
private confirmAndDelete;
|
|
134
|
+
}
|
|
@@ -0,0 +1,257 @@
|
|
|
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 { validateSalesforceId } from '../services/validation.js';
|
|
10
|
+
import { ServiceErrorCodes } from '../adapters/errors.js';
|
|
11
|
+
/**
|
|
12
|
+
* Error codes for summary purge operations.
|
|
13
|
+
* Re-exported from ServiceErrorCodes (E4510-E4517) for convenience.
|
|
14
|
+
*/
|
|
15
|
+
export const SummaryPurgeErrorCodes = {
|
|
16
|
+
NO_SELECTION_CRITERIA: ServiceErrorCodes.SUMMARY_PURGE_NO_SELECTION,
|
|
17
|
+
MUTUALLY_EXCLUSIVE: ServiceErrorCodes.SUMMARY_PURGE_MUTUALLY_EXCLUSIVE,
|
|
18
|
+
QUERY_FAILED: ServiceErrorCodes.SUMMARY_PURGE_QUERY_FAILED,
|
|
19
|
+
NO_ELIGIBLE_SUMMARIES: ServiceErrorCodes.SUMMARY_PURGE_NO_ELIGIBLE,
|
|
20
|
+
DELETE_FAILED: ServiceErrorCodes.SUMMARY_PURGE_DELETE_FAILED,
|
|
21
|
+
USER_CANCELLED: ServiceErrorCodes.SUMMARY_PURGE_USER_CANCELLED,
|
|
22
|
+
OPERATION_FAILED: ServiceErrorCodes.SUMMARY_PURGE_OPERATION_FAILED,
|
|
23
|
+
INVALID_IDS: ServiceErrorCodes.SUMMARY_PURGE_INVALID_IDS,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Orchestrates purging of profiling summaries.
|
|
27
|
+
*
|
|
28
|
+
* Supports two selection modes:
|
|
29
|
+
* 1. ID mode: Delete specific summaries by ID (exclusive)
|
|
30
|
+
* 2. Filter mode: Query definitions by filters, then resolve their summaries
|
|
31
|
+
*
|
|
32
|
+
* Two-level status filtering:
|
|
33
|
+
* - Definition level: Exclude definitions with non-terminal statuses
|
|
34
|
+
* - Summary level: Only delete summaries with terminal statuses
|
|
35
|
+
*
|
|
36
|
+
* Optional prune mode (--prune): Only delete non-latest summaries.
|
|
37
|
+
*/
|
|
38
|
+
export class SummaryPurgeOperation {
|
|
39
|
+
definitionService;
|
|
40
|
+
summaryService;
|
|
41
|
+
logger;
|
|
42
|
+
constructor(definitionService, summaryService, logger) {
|
|
43
|
+
this.definitionService = definitionService;
|
|
44
|
+
this.summaryService = summaryService;
|
|
45
|
+
this.logger = logger;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates the empty result structure.
|
|
49
|
+
*/
|
|
50
|
+
static emptyResult() {
|
|
51
|
+
return {
|
|
52
|
+
deleted: 0,
|
|
53
|
+
skipped: 0,
|
|
54
|
+
failed: 0,
|
|
55
|
+
total: 0,
|
|
56
|
+
skippedByStatus: [],
|
|
57
|
+
skippedByPrune: [],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks if filter flags are specified.
|
|
62
|
+
*/
|
|
63
|
+
static hasFilterFlags(options) {
|
|
64
|
+
return options.objectName !== undefined || options.category !== undefined || options.isActive !== undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Executes the summary purge operation.
|
|
68
|
+
*/
|
|
69
|
+
async execute(options) {
|
|
70
|
+
const startTime = Date.now();
|
|
71
|
+
const emptyResult = SummaryPurgeOperation.emptyResult();
|
|
72
|
+
try {
|
|
73
|
+
this.logger?.log('Starting summary purge operation');
|
|
74
|
+
const hasIds = options.ids !== undefined && options.ids.length > 0;
|
|
75
|
+
const hasAll = options.all === true;
|
|
76
|
+
const hasFilters = SummaryPurgeOperation.hasFilterFlags(options);
|
|
77
|
+
// Mutual exclusivity: --ids cannot be combined with filter flags or --all
|
|
78
|
+
if (hasIds && (hasAll || hasFilters)) {
|
|
79
|
+
return createFailureResult(emptyResult, SummaryPurgeErrorCodes.MUTUALLY_EXCLUSIVE, 'The --ids flag is mutually exclusive with filter flags (--object-name, --category, --is-active, --all).', { metadata: { duration: Date.now() - startTime } });
|
|
80
|
+
}
|
|
81
|
+
// Must have at least one selection criterion
|
|
82
|
+
if (!hasIds && !hasAll && !hasFilters) {
|
|
83
|
+
return createFailureResult(emptyResult, SummaryPurgeErrorCodes.NO_SELECTION_CRITERIA, 'No selection criteria specified. Provide --all, --ids, or filter flags.', { metadata: { duration: Date.now() - startTime } });
|
|
84
|
+
}
|
|
85
|
+
if (hasIds) {
|
|
86
|
+
return await this.executeIdMode(options, startTime);
|
|
87
|
+
}
|
|
88
|
+
return await this.executeFilterMode(options, startTime);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
92
|
+
this.logger?.log(`Summary purge operation failed: ${errorMessage}`);
|
|
93
|
+
return createFailureResult(emptyResult, SummaryPurgeErrorCodes.OPERATION_FAILED, errorMessage, {
|
|
94
|
+
metadata: { duration: Date.now() - startTime },
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Executes purge in ID mode: delete specific summaries by ID.
|
|
100
|
+
*
|
|
101
|
+
* Queries summaries directly by ID (O(requested) instead of O(all summaries)).
|
|
102
|
+
* Terminal status filter is applied in the SOQL query.
|
|
103
|
+
*/
|
|
104
|
+
async executeIdMode(options, startTime) {
|
|
105
|
+
const ids = options.ids;
|
|
106
|
+
// Validate all IDs
|
|
107
|
+
for (const id of ids) {
|
|
108
|
+
const idError = validateSalesforceId(id);
|
|
109
|
+
if (idError) {
|
|
110
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.INVALID_IDS, `Invalid summary ID: ${id} - ${idError}`, { metadata: { duration: Date.now() - startTime } });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
this.logger?.log(`Fetching summaries by IDs: ${ids.join(', ')}`);
|
|
114
|
+
// Query summaries directly by ID (includes terminal status filter)
|
|
115
|
+
const summaryResult = await this.summaryService.getSummariesByIds(ids);
|
|
116
|
+
if (!summaryResult.success) {
|
|
117
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.QUERY_FAILED, summaryResult.message ?? 'Summary query failed', { metadata: { duration: Date.now() - startTime } });
|
|
118
|
+
}
|
|
119
|
+
const matched = summaryResult.data;
|
|
120
|
+
if (matched.length === 0) {
|
|
121
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.NO_ELIGIBLE_SUMMARIES, `No summaries found matching IDs: ${ids.join(', ')}`, { metadata: { duration: Date.now() - startTime } });
|
|
122
|
+
}
|
|
123
|
+
options.onSummariesFound?.(matched.length);
|
|
124
|
+
// All matched summaries are terminal (the query already filters for terminal status)
|
|
125
|
+
return this.confirmAndDelete(matched, [], [], options, startTime);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Executes purge in filter mode: query definitions by filters, then resolve summaries.
|
|
129
|
+
*/
|
|
130
|
+
async executeFilterMode(options, startTime) {
|
|
131
|
+
// Build definition query options
|
|
132
|
+
const queryOptions = {};
|
|
133
|
+
if (options.objectName !== undefined) {
|
|
134
|
+
queryOptions.objectNames = [options.objectName];
|
|
135
|
+
}
|
|
136
|
+
if (options.category !== undefined) {
|
|
137
|
+
queryOptions.category = options.category;
|
|
138
|
+
}
|
|
139
|
+
if (options.isActive !== undefined) {
|
|
140
|
+
queryOptions.isActive = options.isActive;
|
|
141
|
+
}
|
|
142
|
+
this.logger?.log('Fetching definitions with filters...');
|
|
143
|
+
const defsResult = await this.definitionService.getAllDefinitions(queryOptions);
|
|
144
|
+
if (!defsResult.success) {
|
|
145
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.QUERY_FAILED, defsResult.message ?? 'Definition query failed', { metadata: { duration: Date.now() - startTime } });
|
|
146
|
+
}
|
|
147
|
+
if (defsResult.data.length === 0) {
|
|
148
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.NO_ELIGIBLE_SUMMARIES, 'No definitions found matching the specified criteria.', { metadata: { duration: Date.now() - startTime } });
|
|
149
|
+
}
|
|
150
|
+
// Two-level filtering: exclude definitions currently being profiled.
|
|
151
|
+
// Definition statuses: NOT PROFILED, IN PROGRESS, COMPLETE, COMPLETE w/ FAILURES, ERROR
|
|
152
|
+
// Only IN PROGRESS definitions should be excluded — all others have completed their profiling run.
|
|
153
|
+
const NON_TERMINAL_DEFINITION_STATUSES = new Set(['IN PROGRESS']);
|
|
154
|
+
const eligibleDefs = defsResult.data.filter((def) => !NON_TERMINAL_DEFINITION_STATUSES.has(def.status));
|
|
155
|
+
if (eligibleDefs.length === 0) {
|
|
156
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.NO_ELIGIBLE_SUMMARIES, 'No definitions with terminal status found. All matching definitions are currently in progress.', { metadata: { duration: Date.now() - startTime } });
|
|
157
|
+
}
|
|
158
|
+
const eligibleDefIds = eligibleDefs.map((d) => d.id);
|
|
159
|
+
// Query summaries for eligible definitions
|
|
160
|
+
const summaryResult = await this.summaryService.getSummariesForPurge({
|
|
161
|
+
definitionIds: eligibleDefIds,
|
|
162
|
+
pruneOnly: options.prune,
|
|
163
|
+
});
|
|
164
|
+
if (!summaryResult.success) {
|
|
165
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.QUERY_FAILED, summaryResult.message ?? 'Summary query failed', { metadata: { duration: Date.now() - startTime } });
|
|
166
|
+
}
|
|
167
|
+
let allSummaries = summaryResult.data;
|
|
168
|
+
// Apply limit (bypassed when --all is specified)
|
|
169
|
+
if (options.limit !== undefined && options.limit > 0 && !options.all) {
|
|
170
|
+
allSummaries = allSummaries.slice(0, options.limit);
|
|
171
|
+
}
|
|
172
|
+
if (allSummaries.length === 0) {
|
|
173
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.NO_ELIGIBLE_SUMMARIES, options.prune
|
|
174
|
+
? 'No non-latest summaries found matching the specified criteria.'
|
|
175
|
+
: 'No summaries found matching the specified criteria.', { metadata: { duration: Date.now() - startTime } });
|
|
176
|
+
}
|
|
177
|
+
options.onSummariesFound?.(allSummaries.length);
|
|
178
|
+
// All returned summaries already have terminal status (filtered by the service query).
|
|
179
|
+
// No additional status filtering needed here.
|
|
180
|
+
return this.confirmAndDelete(allSummaries, [], [], options, startTime);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Handles confirmation, dry-run, and deletion execution.
|
|
184
|
+
*/
|
|
185
|
+
async confirmAndDelete(deletable, skippedByStatus, skippedByPrune, options, startTime) {
|
|
186
|
+
const total = deletable.length + skippedByStatus.length + skippedByPrune.length;
|
|
187
|
+
const preview = {
|
|
188
|
+
deletable,
|
|
189
|
+
skippedByStatus,
|
|
190
|
+
skippedByPrune,
|
|
191
|
+
total,
|
|
192
|
+
pruneMode: options.prune === true,
|
|
193
|
+
};
|
|
194
|
+
// Invoke preview callback for user confirmation
|
|
195
|
+
if (options.onPreviewReady && !options.dryRun && !options.noPrompt) {
|
|
196
|
+
const proceed = await options.onPreviewReady(preview);
|
|
197
|
+
if (!proceed) {
|
|
198
|
+
return createSuccessResult({
|
|
199
|
+
...SummaryPurgeOperation.emptyResult(),
|
|
200
|
+
total,
|
|
201
|
+
cancelled: true,
|
|
202
|
+
skippedByStatus,
|
|
203
|
+
skippedByPrune,
|
|
204
|
+
}, {
|
|
205
|
+
message: 'Purge cancelled by user.',
|
|
206
|
+
metadata: { duration: Date.now() - startTime },
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Dry-run mode
|
|
211
|
+
if (options.dryRun) {
|
|
212
|
+
return createSuccessResult({
|
|
213
|
+
...SummaryPurgeOperation.emptyResult(),
|
|
214
|
+
deleted: deletable.length,
|
|
215
|
+
total,
|
|
216
|
+
dryRun: true,
|
|
217
|
+
preview,
|
|
218
|
+
skippedByStatus,
|
|
219
|
+
skippedByPrune,
|
|
220
|
+
}, {
|
|
221
|
+
message: `Dry-run: ${deletable.length} deletable, ${skippedByStatus.length} skipped by status, ${skippedByPrune.length} preserved (latest)`,
|
|
222
|
+
metadata: { duration: Date.now() - startTime },
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// Nothing to delete
|
|
226
|
+
if (deletable.length === 0) {
|
|
227
|
+
return createSuccessResult({
|
|
228
|
+
...SummaryPurgeOperation.emptyResult(),
|
|
229
|
+
total,
|
|
230
|
+
skipped: skippedByStatus.length + skippedByPrune.length,
|
|
231
|
+
skippedByStatus,
|
|
232
|
+
skippedByPrune,
|
|
233
|
+
}, {
|
|
234
|
+
message: 'No summaries eligible for deletion.',
|
|
235
|
+
metadata: { duration: Date.now() - startTime },
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
// Execute deletion
|
|
239
|
+
const deleteResult = await this.summaryService.deleteSummaries(deletable, options.onProgress);
|
|
240
|
+
if (!deleteResult.success) {
|
|
241
|
+
return createFailureResult(SummaryPurgeOperation.emptyResult(), SummaryPurgeErrorCodes.DELETE_FAILED, deleteResult.message ?? 'Delete operation failed', { metadata: { duration: Date.now() - startTime } });
|
|
242
|
+
}
|
|
243
|
+
const { deleted, skipped, failed } = deleteResult.data;
|
|
244
|
+
return createSuccessResult({
|
|
245
|
+
deleted,
|
|
246
|
+
skipped: skipped + skippedByStatus.length + skippedByPrune.length,
|
|
247
|
+
failed,
|
|
248
|
+
total,
|
|
249
|
+
skippedByStatus,
|
|
250
|
+
skippedByPrune,
|
|
251
|
+
}, {
|
|
252
|
+
message: `Purged ${deleted} profiling summaries`,
|
|
253
|
+
metadata: { duration: Date.now() - startTime },
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=SummaryPurgeOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SummaryPurgeOperation.js","sourceRoot":"","sources":["../../src/operations/SummaryPurgeOperation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAsB,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAW3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAyF1D;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,qBAAqB,EAAE,iBAAiB,CAAC,0BAA0B;IACnE,kBAAkB,EAAE,iBAAiB,CAAC,gCAAgC;IACtE,YAAY,EAAE,iBAAiB,CAAC,0BAA0B;IAC1D,qBAAqB,EAAE,iBAAiB,CAAC,yBAAyB;IAClE,aAAa,EAAE,iBAAiB,CAAC,2BAA2B;IAC5D,cAAc,EAAE,iBAAiB,CAAC,4BAA4B;IAC9D,gBAAgB,EAAE,iBAAiB,CAAC,8BAA8B;IAClE,WAAW,EAAE,iBAAiB,CAAC,yBAAyB;CAChD,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAqB;IAEb;IACA;IACA;IAHnB,YACmB,iBAA6C,EAC7C,cAAuC,EACvC,MAAgB;QAFhB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,mBAAc,GAAd,cAAc,CAAyB;QACvC,WAAM,GAAN,MAAM,CAAU;IAChC,CAAC;IAEJ;;OAEG;IACK,MAAM,CAAC,WAAW;QACxB,OAAO;YACL,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,OAA4B;QACxD,OAAO,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC9G,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,OAA4B;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC;YACpC,MAAM,UAAU,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEjE,0EAA0E;YAC1E,IAAI,MAAM,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;gBACrC,OAAO,mBAAmB,CACxB,WAAW,EACX,sBAAsB,CAAC,kBAAkB,EACzC,yGAAyG,EACzG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;YACJ,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,OAAO,mBAAmB,CACxB,WAAW,EACX,sBAAsB,CAAC,qBAAqB,EAC5C,yEAAyE,EACzE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YAEpE,OAAO,mBAAmB,CAAC,WAAW,EAAE,sBAAsB,CAAC,gBAAgB,EAAE,YAAY,EAAE;gBAC7F,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa,CACzB,OAA4B,EAC5B,SAAiB;QAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAI,CAAC;QAEzB,mBAAmB;QACnB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,WAAW,EAClC,uBAAuB,EAAE,MAAM,OAAO,EAAE,EACxC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,8BAA8B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEjE,mEAAmE;QACnE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEvE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,YAAY,EACnC,aAAa,CAAC,OAAO,IAAI,sBAAsB,EAC/C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC;QAEnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,qBAAqB,EAC5C,oCAAoC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACpD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3C,qFAAqF;QACrF,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAC7B,OAA4B,EAC5B,SAAiB;QAEjB,iCAAiC;QACjC,MAAM,YAAY,GAAoD,EAAE,CAAC;QACzE,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,YAAY,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEhF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,YAAY,EACnC,UAAU,CAAC,OAAO,IAAI,yBAAyB,EAC/C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,qBAAqB,EAC5C,uDAAuD,EACvD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,wFAAwF;QACxF,mGAAmG;QACnG,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CACzC,CAAC,GAAwB,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAChF,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,qBAAqB,EAC5C,gGAAgG,EAChG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE1E,2CAA2C;QAC3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC;YACnE,aAAa,EAAE,cAAc;YAC7B,SAAS,EAAE,OAAO,CAAC,KAAK;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,YAAY,EACnC,aAAa,CAAC,OAAO,IAAI,sBAAsB,EAC/C,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;QAEtC,iDAAiD;QACjD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACrE,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,qBAAqB,EAC5C,OAAO,CAAC,KAAK;gBACX,CAAC,CAAC,gEAAgE;gBAClE,CAAC,CAAC,qDAAqD,EACzD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEhD,uFAAuF;QACvF,8CAA8C;QAC9C,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,SAA+B,EAC/B,eAAqC,EACrC,cAAoC,EACpC,OAA4B,EAC5B,SAAiB;QAEjB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAChF,MAAM,OAAO,GAAwB;YACnC,SAAS;YACT,eAAe;YACf,cAAc;YACd,KAAK;YACL,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;SAClC,CAAC;QAEF,gDAAgD;QAChD,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,mBAAmB,CACxB;oBACE,GAAG,qBAAqB,CAAC,WAAW,EAAE;oBACtC,KAAK;oBACL,SAAS,EAAE,IAAI;oBACf,eAAe;oBACf,cAAc;iBACf,EACD;oBACE,OAAO,EAAE,0BAA0B;oBACnC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;iBAC/C,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,mBAAmB,CACxB;gBACE,GAAG,qBAAqB,CAAC,WAAW,EAAE;gBACtC,OAAO,EAAE,SAAS,CAAC,MAAM;gBACzB,KAAK;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO;gBACP,eAAe;gBACf,cAAc;aACf,EACD;gBACE,OAAO,EAAE,YAAY,SAAS,CAAC,MAAM,eAAe,eAAe,CAAC,MAAM,uBAAuB,cAAc,CAAC,MAAM,qBAAqB;gBAC3I,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aAC/C,CACF,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,mBAAmB,CACxB;gBACE,GAAG,qBAAqB,CAAC,WAAW,EAAE;gBACtC,KAAK;gBACL,OAAO,EAAE,eAAe,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;gBACvD,eAAe;gBACf,cAAc;aACf,EACD;gBACE,OAAO,EAAE,qCAAqC;gBAC9C,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aAC/C,CACF,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9F,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,WAAW,EAAE,EACnC,sBAAsB,CAAC,aAAa,EACpC,YAAY,CAAC,OAAO,IAAI,yBAAyB,EACjD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;QAEvD,OAAO,mBAAmB,CACxB;YACE,OAAO;YACP,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;YACjE,MAAM;YACN,KAAK;YACL,eAAe;YACf,cAAc;SACf,EACD;YACE,OAAO,EAAE,UAAU,OAAO,sBAAsB;YAChD,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;SAC/C,CACF,CAAC;IACJ,CAAC;CACF"}
|