@uipath/project-packager 1.1.4 → 1.1.5
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/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/node.js +2 -2
- package/dist/node.js.map +1 -1
- package/dist/src/i18n/index.d.ts +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { I18nManager, LogLevel, LogMessage, NugetPackager, Path, ProjectTypes, TemporaryStorageService, ToolErrorCodes, ToolResult, ZipService, toolsFactoryRepository, translate } from "@uipath/solutionpackager-tool-core";
|
|
2
|
+
import { BrowserContextStorage, ConsoleTelemetryProvider, TelemetryService } from "@uipath/telemetry";
|
|
2
3
|
var de_namespaceObject = JSON.parse('{"solutionpackager":{"projectLoader":{"errors":{"pathRequired":"Project directory path is required","noProjectFile":"No {projectFile} or {manifestFile} found in directory: {path}","readFailed":"Failed to read project file: {path}","invalidProject":"Invalid project file: {path}. Missing ProjectType field."}},"validator":{"errors":{"destinationNotDefined":"Destination path is not defined","governanceRequired":"Governance file path is required when governance file type is not Default","governanceFileInfo":"Unable to get file information: {path}","governanceInvalidFile":"Governance file path is not a valid file: {path}"}},"packager":{"errors":{"failedToGetStreams":"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}","failedToReadPackage":"Failed to read package file: {path}"}},"signing":{"errors":{"dotnetNotAvailable":"dotnet CLI is not available. Package signing requires dotnet CLI to be installed."},"info":{"dotnetNotAvailable":"dotnet CLI is not available. Cannot sign package."}}}}');
|
|
3
4
|
const en = {
|
|
4
5
|
solutionpackager: {
|
|
@@ -681,7 +682,7 @@ class ProjectPackager {
|
|
|
681
682
|
}
|
|
682
683
|
return packageStreams;
|
|
683
684
|
}
|
|
684
|
-
async executeProjectOperationAsync(options, operationName, telemetryName, operation,
|
|
685
|
+
async executeProjectOperationAsync(options, operationName, telemetryName, operation, cancellationToken) {
|
|
685
686
|
return await this.telemetryService.trackRequest(telemetryName, async ()=>{
|
|
686
687
|
try {
|
|
687
688
|
const loadedProject = await this.projectLoader.loadProject(options.inputPath);
|
|
@@ -775,7 +776,6 @@ class ProjectPackager {
|
|
|
775
776
|
this.projectLoader = new ProjectLoader(this.fileSystem);
|
|
776
777
|
}
|
|
777
778
|
}
|
|
778
|
-
export { BrowserContextStorage, ConsoleTelemetryProvider, TelemetryService
|
|
779
|
-
export { PackService, PackagerParameters, PackagerParametersValidator, ProjectBuildOptions, ProjectBuildOptionsValidator, ProjectLoader, ProjectPackOptions, ProjectPackager, ProjectRestoreOptions, ProjectToolExecutor, ProjectValidateOptions, ProjectValidateOptionsValidator, ToolLogger, ToolsFactory, packager_parameters_RulesConfigFileType as RulesConfigFileType, setGlobalLogHandler, telemetry_names_TelemetryNames as TelemetryNames };
|
|
779
|
+
export { BrowserContextStorage, ConsoleTelemetryProvider, PackService, PackagerParameters, PackagerParametersValidator, ProjectBuildOptions, ProjectBuildOptionsValidator, ProjectLoader, ProjectPackOptions, ProjectPackager, ProjectRestoreOptions, ProjectToolExecutor, ProjectValidateOptions, ProjectValidateOptionsValidator, packager_parameters_RulesConfigFileType as RulesConfigFileType, telemetry_names_TelemetryNames as TelemetryNames, TelemetryService, ToolLogger, ToolsFactory, setGlobalLogHandler };
|
|
780
780
|
|
|
781
781
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\de.json","webpack://projectpackager/./src/i18n/locales/en.ts","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\es.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\es-MX.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\fr.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ja.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ko.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\pt.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\pt-BR.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ro.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ru.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\tr.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zh-CN.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zh-TW.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zu.json","webpack://projectpackager/./src/i18n/index.ts","webpack://projectpackager/./src/models/packager-parameters.ts","webpack://projectpackager/./src/models/project-restore-options.ts","webpack://projectpackager/./src/models/project-validate-options.ts","webpack://projectpackager/./src/models/project-build-options.ts","webpack://projectpackager/./src/models/project-pack-options.ts","webpack://projectpackager/./src/services/pack-service.ts","webpack://projectpackager/./src/services/packager-parameters-validator.ts","webpack://projectpackager/./src/services/project-build-options-validator.ts","webpack://projectpackager/./src/services/project-loader.ts","webpack://projectpackager/./src/telemetry-names.ts","webpack://projectpackager/./src/services/project-pack-options-builder.ts","webpack://projectpackager/./src/services/project-pack-options-validator.ts","webpack://projectpackager/./src/services/project-tool-executor.ts","webpack://projectpackager/./src/services/project-validate-options-validator.ts","webpack://projectpackager/./src/services/tool-logger.ts","webpack://projectpackager/./src/services/tools-factory.ts","webpack://projectpackager/./src/services/project-packager.ts"],"sourcesContent":["var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","/**\n * English translations for projectpackager package.\n * These translations are registered alongside core translations via I18nManager.\n */\n\nexport const en = {\n solutionpackager: {\n projectLoader: {\n errors: {\n pathRequired: \"Project directory path is required\",\n noProjectFile:\n \"No {projectFile} or {manifestFile} found in directory: {path}\",\n readFailed: \"Failed to read project file: {path}\",\n invalidProject:\n \"Invalid project file: {path}. Missing ProjectType field.\",\n },\n },\n validator: {\n errors: {\n destinationNotDefined: \"Destination path is not defined\",\n governanceRequired:\n \"Governance file path is required when governance file type is not Default\",\n governanceFileInfo: \"Unable to get file information: {path}\",\n governanceInvalidFile:\n \"Governance file path is not a valid file: {path}\",\n },\n },\n packager: {\n errors: {\n failedToGetStreams:\n \"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\n failedToReadPackage: \"Failed to read package file: {path}\",\n },\n },\n signing: {\n errors: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\",\n },\n info: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Cannot sign package.\",\n },\n },\n },\n} as const;\n\nexport type TranslationKeys = typeof en;\n","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","/**\n * i18n module for projectpackager package.\n * Registers projectpackager-specific translations.\n */\n\nimport { I18nManager } from \"@uipath/solutionpackager-tool-core\";\nimport de from \"./locales/de.json\" with { type: \"json\" };\nimport { en } from \"./locales/en.js\";\nimport es from \"./locales/es.json\" with { type: \"json\" };\nimport esMX from \"./locales/es-MX.json\" with { type: \"json\" };\nimport fr from \"./locales/fr.json\" with { type: \"json\" };\nimport ja from \"./locales/ja.json\" with { type: \"json\" };\nimport ko from \"./locales/ko.json\" with { type: \"json\" };\nimport pt from \"./locales/pt.json\" with { type: \"json\" };\nimport ptBR from \"./locales/pt-BR.json\" with { type: \"json\" };\nimport ro from \"./locales/ro.json\" with { type: \"json\" };\nimport ru from \"./locales/ru.json\" with { type: \"json\" };\nimport tr from \"./locales/tr.json\" with { type: \"json\" };\nimport zhCN from \"./locales/zh-CN.json\" with { type: \"json\" };\nimport zhTW from \"./locales/zh-TW.json\" with { type: \"json\" };\nimport zu from \"./locales/zu.json\" with { type: \"json\" };\n\n/**\n * Register projectpackager translations at module initialization.\n * This extends the core translations with package-specific keys.\n */\nI18nManager.registerTranslations(\"en\", en);\nI18nManager.registerTranslations(\"de\", de);\nI18nManager.registerTranslations(\"es\", es);\nI18nManager.registerTranslations(\"es-MX\", esMX);\nI18nManager.registerTranslations(\"fr\", fr);\nI18nManager.registerTranslations(\"ja\", ja);\nI18nManager.registerTranslations(\"ko\", ko);\nI18nManager.registerTranslations(\"pt\", pt);\nI18nManager.registerTranslations(\"pt-BR\", ptBR);\nI18nManager.registerTranslations(\"ro\", ro);\nI18nManager.registerTranslations(\"ru\", ru);\nI18nManager.registerTranslations(\"tr\", tr);\nI18nManager.registerTranslations(\"zh-CN\", zhCN);\nI18nManager.registerTranslations(\"zh-TW\", zhTW);\nI18nManager.registerTranslations(\"zu\", zu);\n\nexport type { TranslationKeys } from \"./locales/en.js\";\n// Export the translations for type inference\nexport { en };\n","import type { ConnectionInfo as ToolCoreConnectionInfo } from \"@uipath/solutionpackager-tool-core\";\nimport {\n LogLevel,\n type TargetFramework,\n} from \"@uipath/solutionpackager-tool-core\";\n\n// Re-export ConnectionInfo from tool.core for consistency\nexport type ConnectionInfo = ToolCoreConnectionInfo;\n\n/**\n * Rules configuration file type enum\n */\nexport enum RulesConfigFileType {\n Default = \"Default\",\n AutomationOps = \"AutomationOps\",\n Studio = \"Studio\",\n}\n\n/**\n * Validate options\n */\nexport interface ValidateOptions {\n /**\n * Whether to skip analysis\n */\n skipAnalyze: boolean;\n\n /**\n * Default severity level\n */\n defaultSeverity?: string;\n\n /**\n * Path to governance/policy file\n */\n governanceFilePath?: string;\n\n /**\n * Type of governance file\n */\n governanceFileType: RulesConfigFileType;\n}\n\n/**\n * Pack options\n */\nexport interface PackOptions {\n /**\n * Whether to skip dependency optimization\n */\n skipDependencyOptimization: boolean;\n\n /**\n * Whether to include sources\n */\n includeSources: boolean;\n\n /**\n * Whether to split packages\n */\n splitPackages: boolean;\n}\n\n/**\n * Publish information\n */\nexport interface PublishInfo {\n /**\n * publish request id.\n */\n id: string;\n}\n\n/**\n * Package signing information\n */\nexport interface PackageSigningInfo {\n /**\n * Path to the certificate file\n */\n certificatePath?: string;\n\n /**\n * Certificate password\n */\n certificatePassword?: string;\n\n /**\n * Timestamp server URL\n */\n timestampServer?: string;\n}\n\n/**\n * Base parameters for the packager tool\n */\nexport abstract class PackagerParameters {\n /**\n * Input path to the solution or project folder\n */\n inputPath!: string;\n\n /**\n * Log level for the packager\n */\n logLevel: LogLevel = LogLevel.Warn;\n\n /**\n * Output path for generated artifacts.\n * If not provided, a temporary path will be used.\n */\n outputPath?: string;\n\n /**\n * Target framework for the package\n */\n targetFramework?: TargetFramework;\n\n /**\n * Whether to exclude configured sources\n */\n excludeConfiguredSources: boolean = false;\n\n /**\n * Path to NuGet sources configuration file\n */\n nuGetSourcesConfigPath?: string;\n\n /**\n * Path to detailed log file\n */\n detailedLogPath?: string;\n\n /**\n * Connection information\n */\n connection?: ConnectionInfo;\n}\n","import { PackagerParameters } from \"./packager-parameters.js\";\n\n/**\n * Project-specific parameters for restore operations\n */\nexport class ProjectRestoreOptions extends PackagerParameters {}\n","import {\n RulesConfigFileType,\n type ValidateOptions,\n} from \"./packager-parameters.js\";\nimport { ProjectRestoreOptions } from \"./project-restore-options.js\";\n\n/**\n * Project-specific parameters for validate/analyze operations\n */\nexport class ProjectValidateOptions extends ProjectRestoreOptions {\n /**\n * Validate options\n */\n validateOptions: ValidateOptions = {\n skipAnalyze: false,\n governanceFileType: RulesConfigFileType.Default,\n };\n}\n","import { ProjectValidateOptions } from \"./project-validate-options.js\";\n\n/**\n * Project-specific parameters for build operations\n */\nexport class ProjectBuildOptions extends ProjectValidateOptions {}\n","import type { NugetPackageInfo } from \"@uipath/solutionpackager-tool-core\";\nimport type { PackageSigningInfo, PackOptions } from \"./packager-parameters.js\";\nimport { ProjectBuildOptions } from \"./project-build-options.js\";\n\n/**\n * Project-specific parameters extending build options with pack-specific settings\n */\nexport class ProjectPackOptions extends ProjectBuildOptions {\n destinationPath!: string;\n\n /**\n * NuGet package information\n */\n package!: NugetPackageInfo;\n\n /**\n * Package signing information\n */\n signingInfo?: PackageSigningInfo;\n\n /**\n * Pack options\n */\n packOptions?: PackOptions;\n}\n","/**\n * Interface for NuGet package operations\n */\nexport interface IPackService {\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string;\n}\n\n/**\n * Service for NuGet package operations\n */\nexport class PackService implements IPackService {\n // Matches non-word characters except dots and dashes (equivalent to C# [\\W-[.-]])\n private readonly disallowedCharsRegex = /[^\\w.-]/g;\n private readonly spacesDotRegex = /[\\s.]+/g;\n // Matches zero or more dots, followed by dash or colon, followed by zero or more dots (equivalent to C# \\.*[-:]\\..*)\n private readonly dotDashRegex = /\\.*[-:]\\.*/g;\n private readonly MaxPackageIdLength = 100;\n\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string {\n packageId = packageId.trim();\n packageId = packageId.replace(this.spacesDotRegex, \".\");\n packageId = packageId.replace(this.dotDashRegex, \"-\");\n packageId = packageId.replace(this.disallowedCharsRegex, \"_\");\n\n if (packageId.length > this.MaxPackageIdLength) {\n throw new Error(\n `Package id ${packageId} exceeds the characters limit of ${this.MaxPackageIdLength}`,\n );\n }\n\n return packageId;\n }\n}\n","import {\n type IFileSystem,\n type IToolLogger,\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport {\n type PackagerParameters,\n RulesConfigFileType,\n type ValidateOptions,\n} from \"../models/packager-parameters.js\";\n\n/**\n * Interface for a pack options validator\n */\nexport interface IPackagerParametersValidator<\n TOptions extends PackagerParameters,\n> {\n /**\n * Validate pack options\n * @param options Pack options to validate\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating validation success or failure\n */\n validateAsync(\n options: TOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\n/**\n * Base validator for packager parameters.\n * Contains common validation logic shared by solution and project validators.\n */\nexport class PackagerParametersValidator<TOptions extends PackagerParameters>\n implements IPackagerParametersValidator<TOptions>\n{\n constructor(\n protected readonly logger: IToolLogger,\n protected readonly fileSystem: IFileSystem,\n ) {}\n\n async validateAsync(\n _options: TOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return ToolResult.success();\n }\n\n protected validateDestinationPath(destinationPath: string): ToolResult {\n if (!destinationPath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.destinationNotDefined\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n return ToolResult.success();\n }\n\n protected async validateGovernanceOptions(\n validateOptions: ValidateOptions,\n ): Promise<ToolResult> {\n if (\n validateOptions.governanceFileType === RulesConfigFileType.Default\n ) {\n if (validateOptions.governanceFilePath) {\n this.logger.warn(\n `Governance file path '${validateOptions.governanceFilePath}' will be ignored when governance file type is Default`,\n );\n }\n return ToolResult.success();\n }\n\n if (!validateOptions.governanceFilePath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceRequired\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n\n try {\n const stat = await this.fileSystem.stat(\n validateOptions.governanceFilePath,\n );\n if (!stat) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceFileInfo\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n if (stat.isDirectory()) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceInvalidFile\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorLog = `Governance file not found or inaccessible: ${validateOptions.governanceFilePath}. Error: ${errorMessage}`;\n this.logger.error(errorLog);\n return ToolResult.error(ToolErrorCodes.InternalError, errorLog);\n }\n\n this.logger.info(\n `Using Studio governance file: ${validateOptions.governanceFilePath}`,\n );\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project build options validator\n */\nexport type IProjectBuildOptionsValidator =\n IPackagerParametersValidator<ProjectBuildOptions>;\n\n/**\n * Validator for project build options.\n * Validates governance options required for build operations.\n */\nexport class ProjectBuildOptionsValidator\n extends PackagerParametersValidator<ProjectBuildOptions>\n implements IProjectBuildOptionsValidator\n{\n async validateAsync(\n options: ProjectBuildOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IFileSystem,\n Path,\n type ProjectType,\n ProjectTypes,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject, UiProject } from \"../models/project-models.js\";\n\n/**\n * Interface for loading project information from the file system\n */\nexport interface IProjectLoader {\n /**\n * Load project information from a directory path.\n * Searches for project.uiproj first, falls back to webAppManifest.json.\n * @param projectPath Path to the project directory\n * @returns Loaded project information\n * @throws Error if neither project.uiproj nor webAppManifest.json is found\n */\n loadProject(projectPath: string): Promise<LoadedUiProject>;\n}\n\nexport class ProjectLoader implements IProjectLoader {\n static readonly ProjectFileName = \"project.uiproj\";\n static readonly WebAppManifestFileName = \"webAppManifest.json\";\n\n constructor(private readonly fileSystem: IFileSystem) {}\n\n async loadProject(projectPath: string): Promise<LoadedUiProject> {\n if (!projectPath) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.pathRequired\",\n ),\n );\n }\n\n // Try project.uiproj first\n const projectFilePath = Path.join(\n projectPath,\n ProjectLoader.ProjectFileName,\n );\n const projectFileExists = await this.fileSystem.exists(projectFilePath);\n\n if (projectFileExists) {\n return await this.loadFromProjectFile(projectPath, projectFilePath);\n }\n\n // Fall back to webAppManifest.json\n const webAppManifestPath = Path.join(\n projectPath,\n ProjectLoader.WebAppManifestFileName,\n );\n const webAppManifestExists =\n await this.fileSystem.exists(webAppManifestPath);\n\n if (webAppManifestExists) {\n return this.loadFromWebAppManifest(projectPath, webAppManifestPath);\n }\n\n throw new Error(\n translate.t(\"solutionpackager.projectLoader.errors.noProjectFile\", {\n projectFile: ProjectLoader.ProjectFileName,\n manifestFile: ProjectLoader.WebAppManifestFileName,\n path: projectPath,\n }),\n );\n }\n\n private async loadFromProjectFile(\n projectPath: string,\n projectFilePath: string,\n ): Promise<LoadedUiProject> {\n const fileContent = await this.fileSystem.readFile(projectFilePath);\n if (!fileContent) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.readFailed\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n const json =\n typeof fileContent === \"string\"\n ? fileContent\n : new TextDecoder(\"utf-8\").decode(fileContent);\n\n const projectData = JSON.parse(json) as UiProject;\n\n const projectType = projectData?.ProjectType || projectData?.type;\n if (!projectData || !projectType) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.invalidProject\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n return {\n type: projectType as ProjectType,\n name: projectData.Name || Path.basename(projectPath),\n projectPath,\n projectFilePath,\n };\n }\n\n private loadFromWebAppManifest(\n projectPath: string,\n webAppManifestPath: string,\n ): LoadedUiProject {\n // webAppManifest.json presence indicates an AppV2 project\n const folderName = Path.basename(projectPath);\n\n return {\n type: ProjectTypes.AppV2,\n name: folderName,\n projectPath,\n projectFilePath: webAppManifestPath,\n };\n }\n}\n","export enum TelemetryNames {\n ProjectToolPack = \"ProjectPackager.Tool.Pack\",\n ProjectToolRestore = \"ProjectPackager.Tool.Restore\",\n ProjectToolValidate = \"ProjectPackager.Tool.Validate\",\n ProjectToolBuild = \"ProjectPackager.Tool.Build\",\n ProjectPackagerPack = \"ProjectPackager.Pack\",\n ProjectPackagerRestore = \"ProjectPackager.Restore\",\n ProjectPackagerValidate = \"ProjectPackager.Validate\",\n ProjectPackagerBuild = \"ProjectPackager.Build\",\n ProjectPackagerProjectLoaded = \"ProjectPackager.ProjectLoaded\",\n}\n","import type {\n IFileSystem,\n IProjectPackOptions,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject } from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackService } from \"./pack-service.js\";\n\n/**\n * Interface for building project pack options\n */\nexport interface IProjectPackOptionsBuilder {\n /**\n * Build project pack options from project parameters and loaded project info\n */\n buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions>;\n}\n\nexport class ProjectPackOptionsBuilder implements IProjectPackOptionsBuilder {\n constructor(\n private readonly packService: IPackService,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions> {\n if (!parameters.outputPath) {\n throw new Error(\"Output path is required for Pack command\");\n }\n\n await this.fileSystem.mkdir(parameters.outputPath);\n\n // Use project name if package id is not set or is empty\n const packageId =\n !parameters.package.id || parameters.package.id.trim() === \"\"\n ? project.name\n : parameters.package.id;\n\n const packageInfo = {\n ...parameters.package,\n id: this.packService.sanitizePackageId(packageId),\n };\n\n return {\n projectPath: project.projectPath,\n excludeConfiguredSources:\n parameters.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: parameters.nuGetSourcesConfigPath,\n logLevel: parameters.logLevel,\n skipAnalyze: parameters.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: parameters.detailedLogPath,\n policyFilePath: parameters.validateOptions.governanceFilePath,\n policyFileType: parameters.validateOptions.governanceFileType,\n outputPath: parameters.outputPath,\n outputType: undefined,\n projectType: project.type,\n package: packageInfo,\n skipDependencyOptimization:\n parameters.packOptions?.skipDependencyOptimization ?? false,\n includeSources: parameters.packOptions?.includeSources ?? false,\n splitPackages: parameters.packOptions?.splitPackages ?? false,\n };\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackagerParametersValidator } from \"./packager-parameters-validator.js\";\nimport { ProjectBuildOptionsValidator } from \"./project-build-options-validator.js\";\n\n/**\n * Interface for the project pack options validator\n */\nexport type IProjectPackOptionsValidator =\n IPackagerParametersValidator<ProjectPackOptions>;\n\n/**\n * Validator for project pack options.\n * Validates destination path and governance options required for pack operations.\n */\nexport class ProjectPackOptionsValidator\n extends ProjectBuildOptionsValidator\n implements IProjectPackOptionsValidator\n{\n async validateAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const destinationResult = this.validateDestinationPath(\n options.destinationPath,\n );\n if (!destinationResult.isSuccess) {\n return destinationResult;\n }\n\n return await super.validateAsync(options, cancellationToken);\n }\n}\n","import {\n type IProjectBuildOptions,\n type IProjectPackOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type ProjectOperationContext,\n type ProjectTool,\n ToolErrorCodes,\n ToolResult,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackageSigningInfo } from \"../models/packager-parameters.js\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport type { IToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Interface for executing project tool operations\n */\nexport interface IProjectToolExecutor {\n restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\nexport class ProjectToolExecutor implements IProjectToolExecutor {\n constructor(\n private readonly toolsFactory: IToolsFactory,\n private readonly telemetry: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {}\n\n async restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolRestore,\n project.Type,\n async () => tool.restoreAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolValidate,\n project.Type,\n async () => tool.validateAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolBuild,\n project.Type,\n async () => tool.buildAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(\n project,\n context,\n async (tool) => {\n const result =\n await this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolPack,\n project.Type,\n async () => {\n return await tool.packAsync(\n options,\n cancellationToken,\n );\n },\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n );\n\n // If pack was successful and signing info with certificate path is provided, sign all packages\n if (\n result.isSuccess &&\n signingInfo?.certificatePath &&\n result.packages.length > 0\n ) {\n const signResult = await this.signPackagesAsync(\n result.packages,\n signingInfo,\n );\n if (!signResult.isSuccess) {\n return signResult;\n }\n }\n\n return result;\n },\n );\n }\n\n /**\n * Execute an operation on a project tool with proper creation and disposal.\n */\n private async executeToolOperationAsync(\n project: UiPathProject,\n context: ProjectOperationContext | undefined,\n operation: (tool: ProjectTool) => Promise<ToolResult>,\n ): Promise<ToolResult> {\n try {\n const tool = await this.toolsFactory.createProjectToolAsync(\n project,\n context,\n );\n\n try {\n return await operation(tool);\n } finally {\n const disposeResult = tool.dispose();\n if (disposeResult instanceof Promise) {\n await disposeResult;\n }\n }\n } catch (error) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n /**\n * Sign all packages using the package sign service.\n * @param packages - Array of package paths to sign\n * @param signingInfo - Signing configuration\n * @returns ToolResult indicating success or failure\n */\n private async signPackagesAsync(\n packages: string[],\n signingInfo: PackageSigningInfo,\n ): Promise<ToolResult> {\n // Check if package signing service is available\n if (!this.packageSignService) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n \"Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.\",\n );\n }\n\n const certificatePath = signingInfo.certificatePath as string;\n\n // Sign all packages in parallel\n const signResults = await Promise.all(\n packages.map((packagePath) =>\n this.packageSignService?.signPackageAsync(\n packagePath,\n certificatePath,\n signingInfo.certificatePassword,\n signingInfo.timestampServer,\n ),\n ),\n );\n\n // Check if any signing failed\n const failedResult = signResults.find(\n (result) => result && !result.isSuccess,\n );\n if (failedResult) {\n return failedResult;\n }\n\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project validate options validator\n */\nexport type IProjectValidateOptionsValidator =\n IPackagerParametersValidator<ProjectValidateOptions>;\n\n/**\n * Validator for project validate options.\n * Validates governance options required for validate/analyze operations.\n */\nexport class ProjectValidateOptionsValidator\n extends PackagerParametersValidator<ProjectValidateOptions>\n implements IProjectValidateOptionsValidator\n{\n async validateAsync(\n options: ProjectValidateOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IToolLogger,\n LogLevel,\n LogMessage,\n type LogOptions,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Callback type for handling log messages\n * This is an implementation detail of ToolLogger\n */\nexport type LogHandler = (logMessage: LogMessage) => void;\n\n/**\n * Default log handler that writes formatted messages to console\n */\nlet globalLogHandler: LogHandler = (logMessage: LogMessage) => {\n const formattedMessage = logMessage.toFormattedString();\n switch (logMessage.logLevel) {\n case LogLevel.Debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.Info:\n console.info(formattedMessage);\n break;\n case LogLevel.Warn:\n console.warn(formattedMessage);\n break;\n case LogLevel.Error:\n console.error(formattedMessage);\n break;\n }\n};\n\n/**\n * Set the global log handler for all ToolLogger instances that don't specify one\n */\nexport function setGlobalLogHandler(handler: LogHandler): void {\n globalLogHandler = handler;\n}\n\n/**\n * Logger implementation for creating and outputting LogMessage instances\n * with consistent source and sourceTarget\n */\nexport class ToolLogger implements IToolLogger {\n constructor(\n private readonly source: string,\n private readonly sourceTarget: string,\n ) {}\n\n debug(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Debug, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n info(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n warn(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Warn, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n error(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Error, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n progress(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n log(message: string, logLevel: LogLevel, options?: LogOptions): void {\n const logMessage = new LogMessage(message, logLevel, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n logMessage(message: LogMessage): void {\n globalLogHandler(message);\n }\n}\n","import type {\n IFileSystem,\n IToolsFactoryRepository,\n ProjectOperationContext,\n ProjectTool,\n SolutionTool,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\n\n/**\n * Factory interface for creating solution and project tools\n */\nexport interface IToolsFactory {\n /**\n * Create a solution tool for the specified solution\n * @throws Error if no factory is registered\n */\n createSolutionToolAsync(solutionName: string): Promise<SolutionTool>;\n\n /**\n * Create a project tool for the specified project\n * @param project - The project to create a tool for\n * @param context - Optional operation context with id and sibling project info\n * @throws Error if no factory is found for the project type\n */\n createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool>;\n}\n\n/**\n * Factory for creating solution and project tools\n */\nexport class ToolsFactory implements IToolsFactory {\n constructor(\n private readonly repository: IToolsFactoryRepository,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async createSolutionToolAsync(solutionName: string): Promise<SolutionTool> {\n const logger = new ToolLogger(\"ResourceBuilder\", solutionName);\n const factory = this.repository.getSolutionToolFactory();\n return await factory.createAsync(logger, this.fileSystem);\n }\n\n async createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool> {\n const sourceTarget = getSourceTarget();\n const logger = new ToolLogger(project.Type, sourceTarget);\n\n if (!project.ProjectPath) {\n throw new Error(`Project path not set for project: ${project.Id}`);\n }\n\n const factory = this.repository.getProjectToolFactory(project.Type);\n return await factory.createAsync(logger, this.fileSystem, context);\n\n function getSourceTarget(): string {\n // Split by both forward slash and backslash, get first token (folder name)\n const segments = project.ProjectRelativePath.split(/[/\\\\]/);\n if (segments.length > 1) {\n return segments[0];\n }\n // Standalone project-packager: no folder prefix, use project name\n return project.Id;\n }\n }\n}\n","import {\n toolsFactoryRepository as defaultToolsFactoryRepository,\n type IFileSystem,\n type IProjectBuildOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type IToolsFactoryRepository,\n type NugetPackageInfo,\n NugetPackager,\n Path,\n TemporaryStorageService,\n ToolErrorCodes,\n ToolResult,\n translate,\n ZipService,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackagerParameters } from \"../models/packager-parameters.js\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport type {\n LoadedUiProject,\n UiPathProject,\n} from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { ProjectRestoreOptions } from \"../models/project-restore-options.js\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport { PackService } from \"./pack-service.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport {\n type IProjectBuildOptionsValidator,\n ProjectBuildOptionsValidator,\n} from \"./project-build-options-validator.js\";\nimport { type IProjectLoader, ProjectLoader } from \"./project-loader.js\";\nimport {\n type IProjectPackOptionsBuilder,\n ProjectPackOptionsBuilder,\n} from \"./project-pack-options-builder.js\";\nimport {\n type IProjectPackOptionsValidator,\n ProjectPackOptionsValidator,\n} from \"./project-pack-options-validator.js\";\nimport {\n type IProjectToolExecutor,\n ProjectToolExecutor,\n} from \"./project-tool-executor.js\";\nimport {\n type IProjectValidateOptionsValidator,\n ProjectValidateOptionsValidator,\n} from \"./project-validate-options-validator.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\nimport { type IToolsFactory, ToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Package stream containing package data\n */\nexport interface PackageStream {\n /** Name of the package file */\n name: string;\n /** Package file data */\n data: Uint8Array;\n}\n\n/**\n * Interface for the ProjectPackager component.\n * Provides methods to setup and pack individual UiPath projects.\n */\nexport interface IProjectPackager {\n /**\n * File system instance\n */\n readonly fileSystem: IFileSystem;\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n canPackProjectAsync(projectPath: string): Promise<boolean>;\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string>;\n\n /**\n * Restore project dependencies.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Analyze (validate) a project.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Build a project.\n * @param options Project options containing input path, output path, and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]>;\n}\n\nexport class ProjectPackager implements IProjectPackager {\n private readonly repository: IToolsFactoryRepository;\n private readonly temporaryStorage: TemporaryStorageService;\n private readonly zipService: ZipService;\n private readonly logger: ToolLogger;\n private readonly optionsBuilder: IProjectPackOptionsBuilder;\n private readonly toolsFactory: IToolsFactory;\n private readonly projectExecutor: IProjectToolExecutor;\n private readonly projectLoader: IProjectLoader;\n private readonly validateOptionsValidator: IProjectValidateOptionsValidator;\n private readonly buildOptionsValidator: IProjectBuildOptionsValidator;\n private readonly packOptionsValidator: IProjectPackOptionsValidator;\n private readonly nugetPackager: NugetPackager;\n\n constructor(\n public readonly fileSystem: IFileSystem,\n private readonly telemetryService: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {\n this.repository = defaultToolsFactoryRepository;\n this.temporaryStorage = new TemporaryStorageService(this.fileSystem);\n this.zipService = new ZipService(this.fileSystem);\n this.nugetPackager = new NugetPackager(this.fileSystem);\n this.logger = new ToolLogger(\"ProjectPackager\", \"PackProject\");\n this.validateOptionsValidator = new ProjectValidateOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.buildOptionsValidator = new ProjectBuildOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.packOptionsValidator = new ProjectPackOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n\n const packService = new PackService();\n this.optionsBuilder = new ProjectPackOptionsBuilder(\n packService,\n this.fileSystem,\n );\n\n this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);\n this.projectExecutor = new ProjectToolExecutor(\n this.toolsFactory,\n this.telemetryService,\n this.packageSignService,\n );\n this.projectLoader = new ProjectLoader(this.fileSystem);\n }\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n async canPackProjectAsync(projectPath: string): Promise<boolean> {\n const project = await this.projectLoader.loadProject(projectPath);\n return this.repository.canHandleProject(project.type);\n }\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n async setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string> {\n this.telemetryService.setOperationId(operationId);\n\n await this.temporaryStorage.cleanup();\n\n if (typeof input === \"string\") {\n return input;\n }\n\n const inputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\"input\");\n await this.zipService.extractAsync(input, inputPath);\n\n // Check if the extracted content is inside a single root folder\n const entries = await this.fileSystem.readdir(inputPath);\n if (entries.length === 1) {\n const innerPath = Path.join(inputPath, entries[0]);\n const stat = await this.fileSystem.stat(innerPath);\n if (stat?.isDirectory()) {\n return innerPath;\n }\n }\n\n return inputPath;\n }\n\n /**\n * Restore project dependencies.\n */\n async restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeProjectOperationAsync(\n options,\n \"Restore\",\n TelemetryNames.ProjectPackagerRestore,\n async (uiPathProject, loadedProject) => {\n const restoreOptions: IProjectRestoreOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n outputPath: options.outputPath,\n };\n return await this.projectExecutor.restoreAsync(\n restoreOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Validate a project.\n */\n async validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult =\n await this.validateOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Validate\",\n TelemetryNames.ProjectPackagerValidate,\n async (uiPathProject, loadedProject) => {\n const validateOptions: IProjectValidateOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n defaultSeverity: options.validateOptions.defaultSeverity,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n };\n return await this.projectExecutor.validateAsync(\n validateOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Build a project.\n */\n async buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult = await this.buildOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Build\",\n TelemetryNames.ProjectPackagerBuild,\n async (uiPathProject, loadedProject) => {\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n const buildOptions: IProjectBuildOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n outputPath: options.outputPath,\n outputType: undefined,\n projectType: uiPathProject.Type,\n };\n return await this.projectExecutor.buildAsync(\n buildOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n async packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n TelemetryNames.ProjectPackagerPack,\n async () => {\n try {\n let result = await this.packOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n\n if (!result.isSuccess) {\n return result;\n }\n\n // Set default outputPath if not provided\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n // Load project information\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n this.telemetryService.trackEvent(\n TelemetryNames.ProjectPackagerProjectLoaded,\n { projectId: loadedProject.name },\n );\n\n // Build project pack options\n const projectPackOptions =\n await this.optionsBuilder.buildProjectPackOptions(\n options,\n loadedProject,\n );\n\n // Create a UiPathProject from loaded project for the executor\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n // Execute the pack operation\n result = await this.projectExecutor.packAsync(\n projectPackOptions,\n uiPathProject,\n undefined,\n options.signingInfo,\n cancellationToken,\n );\n\n // Copy packages to destination path if successful\n if (result.isSuccess && result.packages.length > 0) {\n const destinationPackages =\n await this.copyPackagesToDestination(\n result.packages,\n options.destinationPath,\n projectPackOptions.package,\n );\n result = new ToolResult(\n ToolErrorCodes.Success,\n undefined,\n destinationPackages,\n );\n }\n\n // Log the result\n if (result.isSuccess) {\n this.logger.info(\n `Project pack completed successfully. Packages: ${result.packages.join(\", \")}`,\n );\n } else {\n this.logger.error(\n `Project pack failed with error code ${result.errorCode}: ${result.message}`,\n );\n }\n\n return result;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project pack failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n async getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]> {\n if (!result.isSuccess) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToGetStreams\",\n {\n errorCode: result.errorCode,\n message: result.message ?? \"\",\n },\n ),\n );\n }\n\n if (!result.packages || result.packages.length === 0) {\n return [];\n }\n\n const packageStreams: PackageStream[] = [];\n\n for (const packagePath of result.packages) {\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n const name = packagePath.split(/[\\\\/]/).pop() || packagePath;\n\n packageStreams.push({ name, data });\n }\n\n return packageStreams;\n }\n\n /**\n * Common logic for restore, analyze, and build operations:\n * validates options, loads the project, executes the operation, and handles errors.\n */\n private async executeProjectOperationAsync(\n options: PackagerParameters,\n operationName: string,\n telemetryName: TelemetryNames,\n operation: (\n project: UiPathProject,\n loadedProject: LoadedUiProject,\n ) => Promise<ToolResult>,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n telemetryName,\n async () => {\n try {\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n const operationResult = await operation(\n uiPathProject,\n loadedProject,\n );\n\n if (operationResult.isSuccess) {\n this.logger.info(\n `Project ${operationName.toLowerCase()} completed successfully.`,\n );\n } else {\n this.logger.error(\n `Project ${operationName.toLowerCase()} failed with error code ${operationResult.errorCode}: ${operationResult.message}`,\n );\n }\n\n return operationResult;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project ${operationName.toLowerCase()} failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Copy packages from the output path to the destination path.\n * Handles file paths, directories with .nupkg files, and directories with\n * unpacked NuGet content (e.g., content/, lib/ folders from WorkflowCompiler).\n * @param packagePaths Paths to the package files or directories\n * @param destinationPath Destination directory\n * @param packageInfo NuGet package info for creating .nupkg from unpacked content\n * @returns Paths to the copied package files\n */\n private async copyPackagesToDestination(\n packagePaths: string[],\n destinationPath: string,\n packageInfo: NugetPackageInfo,\n ): Promise<string[]> {\n await this.fileSystem.mkdir(destinationPath);\n\n const destinationPackages: string[] = [];\n\n for (const packagePath of packagePaths) {\n const stat = await this.fileSystem.stat(packagePath);\n\n if (stat?.isDirectory()) {\n // If the path is a directory, find .nupkg files inside it\n const files = await this.fileSystem.readdir(packagePath);\n const nupkgFiles = files.filter((f) => f.endsWith(\".nupkg\"));\n\n if (nupkgFiles.length > 0) {\n // Directory contains .nupkg files - copy them\n for (const nupkgFile of nupkgFiles) {\n const filePath = Path.join(packagePath, nupkgFile);\n const destPath = Path.join(destinationPath, nupkgFile);\n const data = await this.fileSystem.readFile(filePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: filePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n } else {\n // Directory contains unpacked NuGet content (e.g., content/, lib/) -\n // use NugetPackager to create the .nupkg file\n const nupkgFileName = `${packageInfo.id}.${packageInfo.version}.nupkg`;\n const destPath = Path.join(destinationPath, nupkgFileName);\n const packResult = await this.nugetPackager.packAsync(\n packagePath,\n packageInfo,\n destPath,\n );\n destinationPackages.push(packResult.outputPath);\n }\n } else {\n const fileName =\n packagePath.split(/[\\\\/]/).pop() || packagePath;\n const destPath = Path.join(destinationPath, fileName);\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n }\n\n return destinationPackages;\n }\n}\n"],"names":["JSON","en","I18nManager","de","es","esMX","fr","ja","ko","pt","ptBR","ro","ru","tr","zhCN","zhTW","zu","RulesConfigFileType","PackagerParameters","LogLevel","ProjectRestoreOptions","ProjectValidateOptions","ProjectBuildOptions","ProjectPackOptions","PackService","packageId","Error","PackagerParametersValidator","_options","_cancellationToken","ToolResult","destinationPath","error","translate","ToolErrorCodes","validateOptions","stat","errorMessage","String","errorLog","logger","fileSystem","ProjectBuildOptionsValidator","options","ProjectLoader","projectPath","projectFilePath","Path","projectFileExists","webAppManifestPath","webAppManifestExists","fileContent","json","TextDecoder","projectData","projectType","folderName","ProjectTypes","TelemetryNames","ProjectPackOptionsBuilder","parameters","project","packageInfo","undefined","packService","ProjectPackOptionsValidator","cancellationToken","destinationResult","ProjectToolExecutor","context","tool","signingInfo","result","signResult","operation","disposeResult","Promise","packages","certificatePath","signResults","packagePath","failedResult","toolsFactory","telemetry","packageSignService","ProjectValidateOptionsValidator","globalLogHandler","logMessage","formattedMessage","console","setGlobalLogHandler","handler","ToolLogger","message","LogMessage","logLevel","source","sourceTarget","ToolsFactory","solutionName","factory","getSourceTarget","segments","repository","ProjectPackager","input","operationId","inputPath","entries","innerPath","uiPathProject","loadedProject","restoreOptions","validationResult","buildOptions","projectPackOptions","destinationPackages","packageStreams","data","name","operationName","telemetryName","operationResult","packagePaths","files","nupkgFiles","f","nupkgFile","filePath","destPath","nupkgFileName","packResult","fileName","telemetryService","defaultToolsFactoryRepository","TemporaryStorageService","ZipService","NugetPackager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["webpack://projectpackager/./src/i18n/locales/en.ts","webpack://projectpackager/./src/i18n/index.ts","webpack://projectpackager/./src/models/packager-parameters.ts","webpack://projectpackager/./src/models/project-restore-options.ts","webpack://projectpackager/./src/models/project-validate-options.ts","webpack://projectpackager/./src/models/project-build-options.ts","webpack://projectpackager/./src/models/project-pack-options.ts","webpack://projectpackager/./src/services/pack-service.ts","webpack://projectpackager/./src/services/packager-parameters-validator.ts","webpack://projectpackager/./src/services/project-build-options-validator.ts","webpack://projectpackager/./src/services/project-loader.ts","webpack://projectpackager/./src/telemetry-names.ts","webpack://projectpackager/./src/services/project-pack-options-builder.ts","webpack://projectpackager/./src/services/project-pack-options-validator.ts","webpack://projectpackager/./src/services/project-tool-executor.ts","webpack://projectpackager/./src/services/project-validate-options-validator.ts","webpack://projectpackager/./src/services/tool-logger.ts","webpack://projectpackager/./src/services/tools-factory.ts","webpack://projectpackager/./src/services/project-packager.ts"],"sourcesContent":["/**\n * English translations for projectpackager package.\n * These translations are registered alongside core translations via I18nManager.\n */\n\nexport const en = {\n solutionpackager: {\n projectLoader: {\n errors: {\n pathRequired: \"Project directory path is required\",\n noProjectFile:\n \"No {projectFile} or {manifestFile} found in directory: {path}\",\n readFailed: \"Failed to read project file: {path}\",\n invalidProject:\n \"Invalid project file: {path}. Missing ProjectType field.\",\n },\n },\n validator: {\n errors: {\n destinationNotDefined: \"Destination path is not defined\",\n governanceRequired:\n \"Governance file path is required when governance file type is not Default\",\n governanceFileInfo: \"Unable to get file information: {path}\",\n governanceInvalidFile:\n \"Governance file path is not a valid file: {path}\",\n },\n },\n packager: {\n errors: {\n failedToGetStreams:\n \"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\n failedToReadPackage: \"Failed to read package file: {path}\",\n },\n },\n signing: {\n errors: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\",\n },\n info: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Cannot sign package.\",\n },\n },\n },\n} as const;\n\nexport type TranslationKeys = typeof en;\n","/**\n * i18n module for projectpackager package.\n * Registers projectpackager-specific translations.\n */\n\nimport { I18nManager } from \"@uipath/solutionpackager-tool-core\";\nimport de from \"./locales/de.json\" with { type: \"json\" };\nimport { en } from \"./locales/en.js\";\nimport es from \"./locales/es.json\" with { type: \"json\" };\nimport esMX from \"./locales/es-MX.json\" with { type: \"json\" };\nimport fr from \"./locales/fr.json\" with { type: \"json\" };\nimport ja from \"./locales/ja.json\" with { type: \"json\" };\nimport ko from \"./locales/ko.json\" with { type: \"json\" };\nimport pt from \"./locales/pt.json\" with { type: \"json\" };\nimport ptBR from \"./locales/pt-BR.json\" with { type: \"json\" };\nimport ro from \"./locales/ro.json\" with { type: \"json\" };\nimport ru from \"./locales/ru.json\" with { type: \"json\" };\nimport tr from \"./locales/tr.json\" with { type: \"json\" };\nimport zhCN from \"./locales/zh-CN.json\" with { type: \"json\" };\nimport zhTW from \"./locales/zh-TW.json\" with { type: \"json\" };\nimport zu from \"./locales/zu.json\" with { type: \"json\" };\n\n/**\n * Register projectpackager translations at module initialization.\n * This extends the core translations with package-specific keys.\n */\nI18nManager.registerTranslations(\"en\", en);\nI18nManager.registerTranslations(\"de\", de);\nI18nManager.registerTranslations(\"es\", es);\nI18nManager.registerTranslations(\"es-MX\", esMX);\nI18nManager.registerTranslations(\"fr\", fr);\nI18nManager.registerTranslations(\"ja\", ja);\nI18nManager.registerTranslations(\"ko\", ko);\nI18nManager.registerTranslations(\"pt\", pt);\nI18nManager.registerTranslations(\"pt-BR\", ptBR);\nI18nManager.registerTranslations(\"ro\", ro);\nI18nManager.registerTranslations(\"ru\", ru);\nI18nManager.registerTranslations(\"tr\", tr);\nI18nManager.registerTranslations(\"zh-CN\", zhCN);\nI18nManager.registerTranslations(\"zh-TW\", zhTW);\nI18nManager.registerTranslations(\"zu\", zu);\n\n// Export the translations for type inference\nexport { en };\nexport type { TranslationKeys } from \"./locales/en.js\";\n","import type { ConnectionInfo as ToolCoreConnectionInfo } from \"@uipath/solutionpackager-tool-core\";\nimport {\n LogLevel,\n type TargetFramework,\n} from \"@uipath/solutionpackager-tool-core\";\n\n// Re-export ConnectionInfo from tool.core for consistency\nexport type ConnectionInfo = ToolCoreConnectionInfo;\n\n/**\n * Rules configuration file type enum\n */\nexport enum RulesConfigFileType {\n Default = \"Default\",\n AutomationOps = \"AutomationOps\",\n Studio = \"Studio\",\n}\n\n/**\n * Validate options\n */\nexport interface ValidateOptions {\n /**\n * Whether to skip analysis\n */\n skipAnalyze: boolean;\n\n /**\n * Default severity level\n */\n defaultSeverity?: string;\n\n /**\n * Path to governance/policy file\n */\n governanceFilePath?: string;\n\n /**\n * Type of governance file\n */\n governanceFileType: RulesConfigFileType;\n}\n\n/**\n * Pack options\n */\nexport interface PackOptions {\n /**\n * Whether to skip dependency optimization\n */\n skipDependencyOptimization: boolean;\n\n /**\n * Whether to include sources\n */\n includeSources: boolean;\n\n /**\n * Whether to split packages\n */\n splitPackages: boolean;\n}\n\n/**\n * Publish information\n */\nexport interface PublishInfo {\n /**\n * publish request id.\n */\n id: string;\n}\n\n/**\n * Package signing information\n */\nexport interface PackageSigningInfo {\n /**\n * Path to the certificate file\n */\n certificatePath?: string;\n\n /**\n * Certificate password\n */\n certificatePassword?: string;\n\n /**\n * Timestamp server URL\n */\n timestampServer?: string;\n}\n\n/**\n * Base parameters for the packager tool\n */\nexport abstract class PackagerParameters {\n /**\n * Input path to the solution or project folder\n */\n inputPath!: string;\n\n /**\n * Log level for the packager\n */\n logLevel: LogLevel = LogLevel.Warn;\n\n /**\n * Output path for generated artifacts.\n * If not provided, a temporary path will be used.\n */\n outputPath?: string;\n\n /**\n * Target framework for the package\n */\n targetFramework?: TargetFramework;\n\n /**\n * Whether to exclude configured sources\n */\n excludeConfiguredSources: boolean = false;\n\n /**\n * Path to NuGet sources configuration file\n */\n nuGetSourcesConfigPath?: string;\n\n /**\n * Path to detailed log file\n */\n detailedLogPath?: string;\n\n /**\n * Connection information\n */\n connection?: ConnectionInfo;\n}\n","import { PackagerParameters } from \"./packager-parameters.js\";\n\n/**\n * Project-specific parameters for restore operations\n */\nexport class ProjectRestoreOptions extends PackagerParameters {}\n","import {\n RulesConfigFileType,\n type ValidateOptions,\n} from \"./packager-parameters.js\";\nimport { ProjectRestoreOptions } from \"./project-restore-options.js\";\n\n/**\n * Project-specific parameters for validate/analyze operations\n */\nexport class ProjectValidateOptions extends ProjectRestoreOptions {\n /**\n * Validate options\n */\n validateOptions: ValidateOptions = {\n skipAnalyze: false,\n governanceFileType: RulesConfigFileType.Default,\n };\n}\n","import { ProjectValidateOptions } from \"./project-validate-options.js\";\n\n/**\n * Project-specific parameters for build operations\n */\nexport class ProjectBuildOptions extends ProjectValidateOptions {}\n","import type { NugetPackageInfo } from \"@uipath/solutionpackager-tool-core\";\nimport type { PackageSigningInfo, PackOptions } from \"./packager-parameters.js\";\nimport { ProjectBuildOptions } from \"./project-build-options.js\";\n\n/**\n * Project-specific parameters extending build options with pack-specific settings\n */\nexport class ProjectPackOptions extends ProjectBuildOptions {\n destinationPath!: string;\n\n /**\n * NuGet package information\n */\n package!: NugetPackageInfo;\n\n /**\n * Package signing information\n */\n signingInfo?: PackageSigningInfo;\n\n /**\n * Pack options\n */\n packOptions?: PackOptions;\n}\n","/**\n * Interface for NuGet package operations\n */\nexport interface IPackService {\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string;\n}\n\n/**\n * Service for NuGet package operations\n */\nexport class PackService implements IPackService {\n // Matches non-word characters except dots and dashes (equivalent to C# [\\W-[.-]])\n private readonly disallowedCharsRegex = /[^\\w.-]/g;\n private readonly spacesDotRegex = /[\\s.]+/g;\n // Matches zero or more dots, followed by dash or colon, followed by zero or more dots (equivalent to C# \\.*[-:]\\..*)\n private readonly dotDashRegex = /\\.*[-:]\\.*/g;\n private readonly MaxPackageIdLength = 100;\n\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string {\n packageId = packageId.trim();\n packageId = packageId.replace(this.spacesDotRegex, \".\");\n packageId = packageId.replace(this.dotDashRegex, \"-\");\n packageId = packageId.replace(this.disallowedCharsRegex, \"_\");\n\n if (packageId.length > this.MaxPackageIdLength) {\n throw new Error(\n `Package id ${packageId} exceeds the characters limit of ${this.MaxPackageIdLength}`,\n );\n }\n\n return packageId;\n }\n}\n","import {\n type IFileSystem,\n type IToolLogger,\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport {\n type PackagerParameters,\n RulesConfigFileType,\n type ValidateOptions,\n} from \"../models/packager-parameters.js\";\n\n/**\n * Interface for a pack options validator\n */\nexport interface IPackagerParametersValidator<\n TOptions extends PackagerParameters,\n> {\n /**\n * Validate pack options\n * @param options Pack options to validate\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating validation success or failure\n */\n validateAsync(\n options: TOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\n/**\n * Base validator for packager parameters.\n * Contains common validation logic shared by solution and project validators.\n */\nexport class PackagerParametersValidator<TOptions extends PackagerParameters>\n implements IPackagerParametersValidator<TOptions>\n{\n constructor(\n protected readonly logger: IToolLogger,\n protected readonly fileSystem: IFileSystem,\n ) {}\n\n async validateAsync(\n _options: TOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return ToolResult.success();\n }\n\n protected validateDestinationPath(destinationPath: string): ToolResult {\n if (!destinationPath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.destinationNotDefined\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n return ToolResult.success();\n }\n\n protected async validateGovernanceOptions(\n validateOptions: ValidateOptions,\n ): Promise<ToolResult> {\n if (\n validateOptions.governanceFileType === RulesConfigFileType.Default\n ) {\n if (validateOptions.governanceFilePath) {\n this.logger.warn(\n `Governance file path '${validateOptions.governanceFilePath}' will be ignored when governance file type is Default`,\n );\n }\n return ToolResult.success();\n }\n\n if (!validateOptions.governanceFilePath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceRequired\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n\n try {\n const stat = await this.fileSystem.stat(\n validateOptions.governanceFilePath,\n );\n if (!stat) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceFileInfo\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n if (stat.isDirectory()) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceInvalidFile\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorLog = `Governance file not found or inaccessible: ${validateOptions.governanceFilePath}. Error: ${errorMessage}`;\n this.logger.error(errorLog);\n return ToolResult.error(ToolErrorCodes.InternalError, errorLog);\n }\n\n this.logger.info(\n `Using Studio governance file: ${validateOptions.governanceFilePath}`,\n );\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project build options validator\n */\nexport type IProjectBuildOptionsValidator =\n IPackagerParametersValidator<ProjectBuildOptions>;\n\n/**\n * Validator for project build options.\n * Validates governance options required for build operations.\n */\nexport class ProjectBuildOptionsValidator\n extends PackagerParametersValidator<ProjectBuildOptions>\n implements IProjectBuildOptionsValidator\n{\n async validateAsync(\n options: ProjectBuildOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IFileSystem,\n Path,\n type ProjectType,\n ProjectTypes,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject, UiProject } from \"../models/project-models.js\";\n\n/**\n * Interface for loading project information from the file system\n */\nexport interface IProjectLoader {\n /**\n * Load project information from a directory path.\n * Searches for project.uiproj first, falls back to webAppManifest.json.\n * @param projectPath Path to the project directory\n * @returns Loaded project information\n * @throws Error if neither project.uiproj nor webAppManifest.json is found\n */\n loadProject(projectPath: string): Promise<LoadedUiProject>;\n}\n\nexport class ProjectLoader implements IProjectLoader {\n static readonly ProjectFileName = \"project.uiproj\";\n static readonly WebAppManifestFileName = \"webAppManifest.json\";\n\n constructor(private readonly fileSystem: IFileSystem) {}\n\n async loadProject(projectPath: string): Promise<LoadedUiProject> {\n if (!projectPath) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.pathRequired\",\n ),\n );\n }\n\n // Try project.uiproj first\n const projectFilePath = Path.join(\n projectPath,\n ProjectLoader.ProjectFileName,\n );\n const projectFileExists = await this.fileSystem.exists(projectFilePath);\n\n if (projectFileExists) {\n return await this.loadFromProjectFile(projectPath, projectFilePath);\n }\n\n // Fall back to webAppManifest.json\n const webAppManifestPath = Path.join(\n projectPath,\n ProjectLoader.WebAppManifestFileName,\n );\n const webAppManifestExists =\n await this.fileSystem.exists(webAppManifestPath);\n\n if (webAppManifestExists) {\n return this.loadFromWebAppManifest(projectPath, webAppManifestPath);\n }\n\n throw new Error(\n translate.t(\"solutionpackager.projectLoader.errors.noProjectFile\", {\n projectFile: ProjectLoader.ProjectFileName,\n manifestFile: ProjectLoader.WebAppManifestFileName,\n path: projectPath,\n }),\n );\n }\n\n private async loadFromProjectFile(\n projectPath: string,\n projectFilePath: string,\n ): Promise<LoadedUiProject> {\n const fileContent = await this.fileSystem.readFile(projectFilePath);\n if (!fileContent) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.readFailed\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n const json =\n typeof fileContent === \"string\"\n ? fileContent\n : new TextDecoder(\"utf-8\").decode(fileContent);\n\n const projectData = JSON.parse(json) as UiProject;\n\n const projectType = projectData?.ProjectType || projectData?.type;\n if (!projectData || !projectType) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.invalidProject\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n return {\n type: projectType as ProjectType,\n name: projectData.Name || Path.basename(projectPath),\n projectPath,\n projectFilePath,\n };\n }\n\n private loadFromWebAppManifest(\n projectPath: string,\n webAppManifestPath: string,\n ): LoadedUiProject {\n // webAppManifest.json presence indicates an AppV2 project\n const folderName = Path.basename(projectPath);\n\n return {\n type: ProjectTypes.AppV2,\n name: folderName,\n projectPath,\n projectFilePath: webAppManifestPath,\n };\n }\n}\n","export enum TelemetryNames {\n ProjectToolPack = \"ProjectPackager.Tool.Pack\",\n ProjectToolRestore = \"ProjectPackager.Tool.Restore\",\n ProjectToolValidate = \"ProjectPackager.Tool.Validate\",\n ProjectToolBuild = \"ProjectPackager.Tool.Build\",\n ProjectPackagerPack = \"ProjectPackager.Pack\",\n ProjectPackagerRestore = \"ProjectPackager.Restore\",\n ProjectPackagerValidate = \"ProjectPackager.Validate\",\n ProjectPackagerBuild = \"ProjectPackager.Build\",\n ProjectPackagerProjectLoaded = \"ProjectPackager.ProjectLoaded\",\n}\n","import type {\n IFileSystem,\n IProjectPackOptions,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject } from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackService } from \"./pack-service.js\";\n\n/**\n * Interface for building project pack options\n */\nexport interface IProjectPackOptionsBuilder {\n /**\n * Build project pack options from project parameters and loaded project info\n */\n buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions>;\n}\n\nexport class ProjectPackOptionsBuilder implements IProjectPackOptionsBuilder {\n constructor(\n private readonly packService: IPackService,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions> {\n if (!parameters.outputPath) {\n throw new Error(\"Output path is required for Pack command\");\n }\n\n await this.fileSystem.mkdir(parameters.outputPath);\n\n // Use project name if package id is not set or is empty\n const packageId =\n !parameters.package.id || parameters.package.id.trim() === \"\"\n ? project.name\n : parameters.package.id;\n\n const packageInfo = {\n ...parameters.package,\n id: this.packService.sanitizePackageId(packageId),\n };\n\n return {\n projectPath: project.projectPath,\n excludeConfiguredSources:\n parameters.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: parameters.nuGetSourcesConfigPath,\n logLevel: parameters.logLevel,\n skipAnalyze: parameters.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: parameters.detailedLogPath,\n policyFilePath: parameters.validateOptions.governanceFilePath,\n policyFileType: parameters.validateOptions.governanceFileType,\n outputPath: parameters.outputPath,\n outputType: undefined,\n projectType: project.type,\n package: packageInfo,\n skipDependencyOptimization:\n parameters.packOptions?.skipDependencyOptimization ?? false,\n includeSources: parameters.packOptions?.includeSources ?? false,\n splitPackages: parameters.packOptions?.splitPackages ?? false,\n };\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackagerParametersValidator } from \"./packager-parameters-validator.js\";\nimport { ProjectBuildOptionsValidator } from \"./project-build-options-validator.js\";\n\n/**\n * Interface for the project pack options validator\n */\nexport type IProjectPackOptionsValidator =\n IPackagerParametersValidator<ProjectPackOptions>;\n\n/**\n * Validator for project pack options.\n * Validates destination path and governance options required for pack operations.\n */\nexport class ProjectPackOptionsValidator\n extends ProjectBuildOptionsValidator\n implements IProjectPackOptionsValidator\n{\n async validateAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const destinationResult = this.validateDestinationPath(\n options.destinationPath,\n );\n if (!destinationResult.isSuccess) {\n return destinationResult;\n }\n\n return await super.validateAsync(options, cancellationToken);\n }\n}\n","import {\n type IProjectBuildOptions,\n type IProjectPackOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type ProjectOperationContext,\n type ProjectTool,\n ToolErrorCodes,\n ToolResult,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackageSigningInfo } from \"../models/packager-parameters.js\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport type { IToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Interface for executing project tool operations\n */\nexport interface IProjectToolExecutor {\n restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\nexport class ProjectToolExecutor implements IProjectToolExecutor {\n constructor(\n private readonly toolsFactory: IToolsFactory,\n private readonly telemetry: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {}\n\n async restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolRestore,\n project.Type,\n async () => tool.restoreAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolValidate,\n project.Type,\n async () => tool.validateAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolBuild,\n project.Type,\n async () => tool.buildAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(\n project,\n context,\n async (tool) => {\n const result =\n await this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolPack,\n project.Type,\n async () => {\n return await tool.packAsync(\n options,\n cancellationToken,\n );\n },\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n );\n\n // If pack was successful and signing info with certificate path is provided, sign all packages\n if (\n result.isSuccess &&\n signingInfo?.certificatePath &&\n result.packages.length > 0\n ) {\n const signResult = await this.signPackagesAsync(\n result.packages,\n signingInfo,\n );\n if (!signResult.isSuccess) {\n return signResult;\n }\n }\n\n return result;\n },\n );\n }\n\n /**\n * Execute an operation on a project tool with proper creation and disposal.\n */\n private async executeToolOperationAsync(\n project: UiPathProject,\n context: ProjectOperationContext | undefined,\n operation: (tool: ProjectTool) => Promise<ToolResult>,\n ): Promise<ToolResult> {\n try {\n const tool = await this.toolsFactory.createProjectToolAsync(\n project,\n context,\n );\n\n try {\n return await operation(tool);\n } finally {\n const disposeResult = tool.dispose();\n if (disposeResult instanceof Promise) {\n await disposeResult;\n }\n }\n } catch (error) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n /**\n * Sign all packages using the package sign service.\n * @param packages - Array of package paths to sign\n * @param signingInfo - Signing configuration\n * @returns ToolResult indicating success or failure\n */\n private async signPackagesAsync(\n packages: string[],\n signingInfo: PackageSigningInfo,\n ): Promise<ToolResult> {\n // Check if package signing service is available\n if (!this.packageSignService) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n \"Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.\",\n );\n }\n\n const certificatePath = signingInfo.certificatePath as string;\n\n // Sign all packages in parallel\n const signResults = await Promise.all(\n packages.map((packagePath) =>\n this.packageSignService?.signPackageAsync(\n packagePath,\n certificatePath,\n signingInfo.certificatePassword,\n signingInfo.timestampServer,\n ),\n ),\n );\n\n // Check if any signing failed\n const failedResult = signResults.find(\n (result) => result && !result.isSuccess,\n );\n if (failedResult) {\n return failedResult;\n }\n\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project validate options validator\n */\nexport type IProjectValidateOptionsValidator =\n IPackagerParametersValidator<ProjectValidateOptions>;\n\n/**\n * Validator for project validate options.\n * Validates governance options required for validate/analyze operations.\n */\nexport class ProjectValidateOptionsValidator\n extends PackagerParametersValidator<ProjectValidateOptions>\n implements IProjectValidateOptionsValidator\n{\n async validateAsync(\n options: ProjectValidateOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IToolLogger,\n LogLevel,\n LogMessage,\n type LogOptions,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Callback type for handling log messages\n * This is an implementation detail of ToolLogger\n */\nexport type LogHandler = (logMessage: LogMessage) => void;\n\n/**\n * Default log handler that writes formatted messages to console\n */\nlet globalLogHandler: LogHandler = (logMessage: LogMessage) => {\n const formattedMessage = logMessage.toFormattedString();\n switch (logMessage.logLevel) {\n case LogLevel.Debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.Info:\n console.info(formattedMessage);\n break;\n case LogLevel.Warn:\n console.warn(formattedMessage);\n break;\n case LogLevel.Error:\n console.error(formattedMessage);\n break;\n }\n};\n\n/**\n * Set the global log handler for all ToolLogger instances that don't specify one\n */\nexport function setGlobalLogHandler(handler: LogHandler): void {\n globalLogHandler = handler;\n}\n\n/**\n * Logger implementation for creating and outputting LogMessage instances\n * with consistent source and sourceTarget\n */\nexport class ToolLogger implements IToolLogger {\n constructor(\n private readonly source: string,\n private readonly sourceTarget: string,\n ) {}\n\n debug(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Debug, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n info(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n warn(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Warn, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n error(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Error, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n progress(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n log(message: string, logLevel: LogLevel, options?: LogOptions): void {\n const logMessage = new LogMessage(message, logLevel, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n logMessage(message: LogMessage): void {\n globalLogHandler(message);\n }\n}\n","import type {\n IFileSystem,\n IToolsFactoryRepository,\n ProjectOperationContext,\n ProjectTool,\n SolutionTool,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\n\n/**\n * Factory interface for creating solution and project tools\n */\nexport interface IToolsFactory {\n /**\n * Create a solution tool for the specified solution\n * @throws Error if no factory is registered\n */\n createSolutionToolAsync(solutionName: string): Promise<SolutionTool>;\n\n /**\n * Create a project tool for the specified project\n * @param project - The project to create a tool for\n * @param context - Optional operation context with id and sibling project info\n * @throws Error if no factory is found for the project type\n */\n createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool>;\n}\n\n/**\n * Factory for creating solution and project tools\n */\nexport class ToolsFactory implements IToolsFactory {\n constructor(\n private readonly repository: IToolsFactoryRepository,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async createSolutionToolAsync(solutionName: string): Promise<SolutionTool> {\n const logger = new ToolLogger(\"ResourceBuilder\", solutionName);\n const factory = this.repository.getSolutionToolFactory();\n return await factory.createAsync(logger, this.fileSystem);\n }\n\n async createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool> {\n const sourceTarget = getSourceTarget();\n const logger = new ToolLogger(project.Type, sourceTarget);\n\n if (!project.ProjectPath) {\n throw new Error(`Project path not set for project: ${project.Id}`);\n }\n\n const factory = this.repository.getProjectToolFactory(project.Type);\n return await factory.createAsync(logger, this.fileSystem, context);\n\n function getSourceTarget(): string {\n // Split by both forward slash and backslash, get first token (folder name)\n const segments = project.ProjectRelativePath.split(/[/\\\\]/);\n if (segments.length > 1) {\n return segments[0];\n }\n // Standalone project-packager: no folder prefix, use project name\n return project.Id;\n }\n }\n}\n","import {\n toolsFactoryRepository as defaultToolsFactoryRepository,\n type IFileSystem,\n type IProjectBuildOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type IToolsFactoryRepository,\n type NugetPackageInfo,\n NugetPackager,\n Path,\n TemporaryStorageService,\n ToolErrorCodes,\n ToolResult,\n translate,\n ZipService,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackagerParameters } from \"../models/packager-parameters.js\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport type {\n LoadedUiProject,\n UiPathProject,\n} from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { ProjectRestoreOptions } from \"../models/project-restore-options.js\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport { PackService } from \"./pack-service.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport {\n type IProjectBuildOptionsValidator,\n ProjectBuildOptionsValidator,\n} from \"./project-build-options-validator.js\";\nimport { type IProjectLoader, ProjectLoader } from \"./project-loader.js\";\nimport {\n type IProjectPackOptionsBuilder,\n ProjectPackOptionsBuilder,\n} from \"./project-pack-options-builder.js\";\nimport {\n type IProjectPackOptionsValidator,\n ProjectPackOptionsValidator,\n} from \"./project-pack-options-validator.js\";\nimport {\n type IProjectToolExecutor,\n ProjectToolExecutor,\n} from \"./project-tool-executor.js\";\nimport {\n type IProjectValidateOptionsValidator,\n ProjectValidateOptionsValidator,\n} from \"./project-validate-options-validator.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\nimport { type IToolsFactory, ToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Package stream containing package data\n */\nexport interface PackageStream {\n /** Name of the package file */\n name: string;\n /** Package file data */\n data: Uint8Array;\n}\n\n/**\n * Interface for the ProjectPackager component.\n * Provides methods to setup and pack individual UiPath projects.\n */\nexport interface IProjectPackager {\n /**\n * File system instance\n */\n readonly fileSystem: IFileSystem;\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n canPackProjectAsync(projectPath: string): Promise<boolean>;\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string>;\n\n /**\n * Restore project dependencies.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Analyze (validate) a project.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Build a project.\n * @param options Project options containing input path, output path, and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]>;\n}\n\nexport class ProjectPackager implements IProjectPackager {\n private readonly repository: IToolsFactoryRepository;\n private readonly temporaryStorage: TemporaryStorageService;\n private readonly zipService: ZipService;\n private readonly logger: ToolLogger;\n private readonly optionsBuilder: IProjectPackOptionsBuilder;\n private readonly toolsFactory: IToolsFactory;\n private readonly projectExecutor: IProjectToolExecutor;\n private readonly projectLoader: IProjectLoader;\n private readonly validateOptionsValidator: IProjectValidateOptionsValidator;\n private readonly buildOptionsValidator: IProjectBuildOptionsValidator;\n private readonly packOptionsValidator: IProjectPackOptionsValidator;\n private readonly nugetPackager: NugetPackager;\n\n constructor(\n public readonly fileSystem: IFileSystem,\n private readonly telemetryService: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {\n this.repository = defaultToolsFactoryRepository;\n this.temporaryStorage = new TemporaryStorageService(this.fileSystem);\n this.zipService = new ZipService(this.fileSystem);\n this.nugetPackager = new NugetPackager(this.fileSystem);\n this.logger = new ToolLogger(\"ProjectPackager\", \"PackProject\");\n this.validateOptionsValidator = new ProjectValidateOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.buildOptionsValidator = new ProjectBuildOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.packOptionsValidator = new ProjectPackOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n\n const packService = new PackService();\n this.optionsBuilder = new ProjectPackOptionsBuilder(\n packService,\n this.fileSystem,\n );\n\n this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);\n this.projectExecutor = new ProjectToolExecutor(\n this.toolsFactory,\n this.telemetryService,\n this.packageSignService,\n );\n this.projectLoader = new ProjectLoader(this.fileSystem);\n }\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n async canPackProjectAsync(projectPath: string): Promise<boolean> {\n const project = await this.projectLoader.loadProject(projectPath);\n return this.repository.canHandleProject(project.type);\n }\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n async setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string> {\n this.telemetryService.setOperationId(operationId);\n\n await this.temporaryStorage.cleanup();\n\n if (typeof input === \"string\") {\n return input;\n }\n\n const inputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\"input\");\n await this.zipService.extractAsync(input, inputPath);\n\n // Check if the extracted content is inside a single root folder\n const entries = await this.fileSystem.readdir(inputPath);\n if (entries.length === 1) {\n const innerPath = Path.join(inputPath, entries[0]);\n const stat = await this.fileSystem.stat(innerPath);\n if (stat?.isDirectory()) {\n return innerPath;\n }\n }\n\n return inputPath;\n }\n\n /**\n * Restore project dependencies.\n */\n async restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeProjectOperationAsync(\n options,\n \"Restore\",\n TelemetryNames.ProjectPackagerRestore,\n async (uiPathProject, loadedProject) => {\n const restoreOptions: IProjectRestoreOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n outputPath: options.outputPath,\n };\n return await this.projectExecutor.restoreAsync(\n restoreOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Validate a project.\n */\n async validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult =\n await this.validateOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Validate\",\n TelemetryNames.ProjectPackagerValidate,\n async (uiPathProject, loadedProject) => {\n const validateOptions: IProjectValidateOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n defaultSeverity: options.validateOptions.defaultSeverity,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n };\n return await this.projectExecutor.validateAsync(\n validateOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Build a project.\n */\n async buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult = await this.buildOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Build\",\n TelemetryNames.ProjectPackagerBuild,\n async (uiPathProject, loadedProject) => {\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n const buildOptions: IProjectBuildOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n outputPath: options.outputPath,\n outputType: undefined,\n projectType: uiPathProject.Type,\n };\n return await this.projectExecutor.buildAsync(\n buildOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n async packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n TelemetryNames.ProjectPackagerPack,\n async () => {\n try {\n let result = await this.packOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n\n if (!result.isSuccess) {\n return result;\n }\n\n // Set default outputPath if not provided\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n // Load project information\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n this.telemetryService.trackEvent(\n TelemetryNames.ProjectPackagerProjectLoaded,\n { projectId: loadedProject.name },\n );\n\n // Build project pack options\n const projectPackOptions =\n await this.optionsBuilder.buildProjectPackOptions(\n options,\n loadedProject,\n );\n\n // Create a UiPathProject from loaded project for the executor\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n // Execute the pack operation\n result = await this.projectExecutor.packAsync(\n projectPackOptions,\n uiPathProject,\n undefined,\n options.signingInfo,\n cancellationToken,\n );\n\n // Copy packages to destination path if successful\n if (result.isSuccess && result.packages.length > 0) {\n const destinationPackages =\n await this.copyPackagesToDestination(\n result.packages,\n options.destinationPath,\n projectPackOptions.package,\n );\n result = new ToolResult(\n ToolErrorCodes.Success,\n undefined,\n destinationPackages,\n );\n }\n\n // Log the result\n if (result.isSuccess) {\n this.logger.info(\n `Project pack completed successfully. Packages: ${result.packages.join(\", \")}`,\n );\n } else {\n this.logger.error(\n `Project pack failed with error code ${result.errorCode}: ${result.message}`,\n );\n }\n\n return result;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project pack failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n async getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]> {\n if (!result.isSuccess) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToGetStreams\",\n {\n errorCode: result.errorCode,\n message: result.message ?? \"\",\n },\n ),\n );\n }\n\n if (!result.packages || result.packages.length === 0) {\n return [];\n }\n\n const packageStreams: PackageStream[] = [];\n\n for (const packagePath of result.packages) {\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n const name = packagePath.split(/[\\\\/]/).pop() || packagePath;\n\n packageStreams.push({ name, data });\n }\n\n return packageStreams;\n }\n\n /**\n * Common logic for restore, analyze, and build operations:\n * validates options, loads the project, executes the operation, and handles errors.\n */\n private async executeProjectOperationAsync(\n options: PackagerParameters,\n operationName: string,\n telemetryName: TelemetryNames,\n operation: (\n project: UiPathProject,\n loadedProject: LoadedUiProject,\n ) => Promise<ToolResult>,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n telemetryName,\n async () => {\n try {\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n const operationResult = await operation(\n uiPathProject,\n loadedProject,\n );\n\n if (operationResult.isSuccess) {\n this.logger.info(\n `Project ${operationName.toLowerCase()} completed successfully.`,\n );\n } else {\n this.logger.error(\n `Project ${operationName.toLowerCase()} failed with error code ${operationResult.errorCode}: ${operationResult.message}`,\n );\n }\n\n return operationResult;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project ${operationName.toLowerCase()} failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Copy packages from the output path to the destination path.\n * Handles file paths, directories with .nupkg files, and directories with\n * unpacked NuGet content (e.g., content/, lib/ folders from WorkflowCompiler).\n * @param packagePaths Paths to the package files or directories\n * @param destinationPath Destination directory\n * @param packageInfo NuGet package info for creating .nupkg from unpacked content\n * @returns Paths to the copied package files\n */\n private async copyPackagesToDestination(\n packagePaths: string[],\n destinationPath: string,\n packageInfo: NugetPackageInfo,\n ): Promise<string[]> {\n await this.fileSystem.mkdir(destinationPath);\n\n const destinationPackages: string[] = [];\n\n for (const packagePath of packagePaths) {\n const stat = await this.fileSystem.stat(packagePath);\n\n if (stat?.isDirectory()) {\n // If the path is a directory, find .nupkg files inside it\n const files = await this.fileSystem.readdir(packagePath);\n const nupkgFiles = files.filter((f) => f.endsWith(\".nupkg\"));\n\n if (nupkgFiles.length > 0) {\n // Directory contains .nupkg files - copy them\n for (const nupkgFile of nupkgFiles) {\n const filePath = Path.join(packagePath, nupkgFile);\n const destPath = Path.join(destinationPath, nupkgFile);\n const data = await this.fileSystem.readFile(filePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: filePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n } else {\n // Directory contains unpacked NuGet content (e.g., content/, lib/) -\n // use NugetPackager to create the .nupkg file\n const nupkgFileName = `${packageInfo.id}.${packageInfo.version}.nupkg`;\n const destPath = Path.join(destinationPath, nupkgFileName);\n const packResult = await this.nugetPackager.packAsync(\n packagePath,\n packageInfo,\n destPath,\n );\n destinationPackages.push(packResult.outputPath);\n }\n } else {\n const fileName =\n packagePath.split(/[\\\\/]/).pop() || packagePath;\n const destPath = Path.join(destinationPath, fileName);\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n }\n\n return destinationPackages;\n }\n}\n"],"names":["en","I18nManager","de","es","esMX","fr","ja","ko","pt","ptBR","ro","ru","tr","zhCN","zhTW","zu","RulesConfigFileType","PackagerParameters","LogLevel","ProjectRestoreOptions","ProjectValidateOptions","ProjectBuildOptions","ProjectPackOptions","PackService","packageId","Error","PackagerParametersValidator","_options","_cancellationToken","ToolResult","destinationPath","error","translate","ToolErrorCodes","validateOptions","stat","errorMessage","String","errorLog","logger","fileSystem","ProjectBuildOptionsValidator","options","ProjectLoader","projectPath","projectFilePath","Path","projectFileExists","webAppManifestPath","webAppManifestExists","fileContent","json","TextDecoder","projectData","JSON","projectType","folderName","ProjectTypes","TelemetryNames","ProjectPackOptionsBuilder","parameters","project","packageInfo","undefined","packService","ProjectPackOptionsValidator","cancellationToken","destinationResult","ProjectToolExecutor","context","tool","signingInfo","result","signResult","operation","disposeResult","Promise","packages","certificatePath","signResults","packagePath","failedResult","toolsFactory","telemetry","packageSignService","ProjectValidateOptionsValidator","globalLogHandler","logMessage","formattedMessage","console","setGlobalLogHandler","handler","ToolLogger","message","LogMessage","logLevel","source","sourceTarget","ToolsFactory","solutionName","factory","getSourceTarget","segments","repository","ProjectPackager","input","operationId","inputPath","entries","innerPath","uiPathProject","loadedProject","restoreOptions","validationResult","buildOptions","projectPackOptions","destinationPackages","packageStreams","data","name","operationName","telemetryName","operationResult","packagePaths","files","nupkgFiles","f","nupkgFile","filePath","destPath","nupkgFileName","packResult","fileName","telemetryService","defaultToolsFactoryRepository","TemporaryStorageService","ZipService","NugetPackager"],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -797,7 +797,7 @@ class ProjectPackager {
|
|
|
797
797
|
}
|
|
798
798
|
return packageStreams;
|
|
799
799
|
}
|
|
800
|
-
async executeProjectOperationAsync(options, operationName, telemetryName, operation,
|
|
800
|
+
async executeProjectOperationAsync(options, operationName, telemetryName, operation, cancellationToken) {
|
|
801
801
|
return await this.telemetryService.trackRequest(telemetryName, async ()=>{
|
|
802
802
|
try {
|
|
803
803
|
const loadedProject = await this.projectLoader.loadProject(options.inputPath);
|
|
@@ -910,6 +910,6 @@ async function createNodeProjectPackager(options) {
|
|
|
910
910
|
const factory = new NodeProjectPackagerFactory();
|
|
911
911
|
return factory.createAsync(options);
|
|
912
912
|
}
|
|
913
|
-
export { BaseNodePackagerFactory, ConsoleTelemetryProvider, NodeContextStorage, NodePackageSignService, PackService, PackagerParameters, PackagerParametersValidator, ProjectBuildOptions, ProjectBuildOptionsValidator, ProjectLoader, ProjectPackOptions, ProjectPackager, ProjectRestoreOptions, ProjectToolExecutor, ProjectValidateOptions, ProjectValidateOptionsValidator, TelemetryService, ToolLogger, ToolsFactory, createNodeProjectPackager,
|
|
913
|
+
export { BaseNodePackagerFactory, ConsoleTelemetryProvider, NodeContextStorage, NodePackageSignService, PackService, PackagerParameters, PackagerParametersValidator, ProjectBuildOptions, ProjectBuildOptionsValidator, ProjectLoader, ProjectPackOptions, ProjectPackager, ProjectRestoreOptions, ProjectToolExecutor, ProjectValidateOptions, ProjectValidateOptionsValidator, packager_parameters_RulesConfigFileType as RulesConfigFileType, telemetry_names_TelemetryNames as TelemetryNames, TelemetryService, ToolLogger, ToolsFactory, createNodeProjectPackager, setGlobalLogHandler };
|
|
914
914
|
|
|
915
915
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sources":["webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\de.json","webpack://projectpackager/./src/i18n/locales/en.ts","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\es.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\es-MX.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\fr.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ja.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ko.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\pt.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\pt-BR.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ro.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\ru.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\tr.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zh-CN.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zh-TW.json","webpack://projectpackager/json|D:\\GitHub\\Alpha\\Studio.Common\\packager\\uipath-projectpackager\\src\\i18n\\locales\\zu.json","webpack://projectpackager/./src/i18n/index.ts","webpack://projectpackager/./src/services/tool-logger.ts","webpack://projectpackager/./src/base-node-packager-factory.ts","webpack://projectpackager/./src/models/packager-parameters.ts","webpack://projectpackager/./src/models/project-restore-options.ts","webpack://projectpackager/./src/models/project-validate-options.ts","webpack://projectpackager/./src/models/project-build-options.ts","webpack://projectpackager/./src/models/project-pack-options.ts","webpack://projectpackager/./src/services/package-sign-service.ts","webpack://projectpackager/./src/telemetry-names.ts","webpack://projectpackager/./src/services/pack-service.ts","webpack://projectpackager/./src/services/packager-parameters-validator.ts","webpack://projectpackager/./src/services/project-build-options-validator.ts","webpack://projectpackager/./src/services/project-loader.ts","webpack://projectpackager/./src/services/project-pack-options-builder.ts","webpack://projectpackager/./src/services/project-pack-options-validator.ts","webpack://projectpackager/./src/services/project-tool-executor.ts","webpack://projectpackager/./src/services/project-validate-options-validator.ts","webpack://projectpackager/./src/services/tools-factory.ts","webpack://projectpackager/./src/services/project-packager.ts","webpack://projectpackager/./src/node-project-packager-factory.ts"],"sourcesContent":["var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","/**\n * English translations for projectpackager package.\n * These translations are registered alongside core translations via I18nManager.\n */\n\nexport const en = {\n solutionpackager: {\n projectLoader: {\n errors: {\n pathRequired: \"Project directory path is required\",\n noProjectFile:\n \"No {projectFile} or {manifestFile} found in directory: {path}\",\n readFailed: \"Failed to read project file: {path}\",\n invalidProject:\n \"Invalid project file: {path}. Missing ProjectType field.\",\n },\n },\n validator: {\n errors: {\n destinationNotDefined: \"Destination path is not defined\",\n governanceRequired:\n \"Governance file path is required when governance file type is not Default\",\n governanceFileInfo: \"Unable to get file information: {path}\",\n governanceInvalidFile:\n \"Governance file path is not a valid file: {path}\",\n },\n },\n packager: {\n errors: {\n failedToGetStreams:\n \"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\n failedToReadPackage: \"Failed to read package file: {path}\",\n },\n },\n signing: {\n errors: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\",\n },\n info: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Cannot sign package.\",\n },\n },\n },\n} as const;\n\nexport type TranslationKeys = typeof en;\n","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","var __rspack_ns_object = JSON.parse('{\"solutionpackager\":{\"projectLoader\":{\"errors\":{\"pathRequired\":\"Project directory path is required\",\"noProjectFile\":\"No {projectFile} or {manifestFile} found in directory: {path}\",\"readFailed\":\"Failed to read project file: {path}\",\"invalidProject\":\"Invalid project file: {path}. Missing ProjectType field.\"}},\"validator\":{\"errors\":{\"destinationNotDefined\":\"Destination path is not defined\",\"governanceRequired\":\"Governance file path is required when governance file type is not Default\",\"governanceFileInfo\":\"Unable to get file information: {path}\",\"governanceInvalidFile\":\"Governance file path is not a valid file: {path}\"}},\"packager\":{\"errors\":{\"failedToGetStreams\":\"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\"failedToReadPackage\":\"Failed to read package file: {path}\"}},\"signing\":{\"errors\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\"},\"info\":{\"dotnetNotAvailable\":\"dotnet CLI is not available. Cannot sign package.\"}}}}')","/**\n * i18n module for projectpackager package.\n * Registers projectpackager-specific translations.\n */\n\nimport { I18nManager } from \"@uipath/solutionpackager-tool-core\";\nimport de from \"./locales/de.json\" with { type: \"json\" };\nimport { en } from \"./locales/en.js\";\nimport es from \"./locales/es.json\" with { type: \"json\" };\nimport esMX from \"./locales/es-MX.json\" with { type: \"json\" };\nimport fr from \"./locales/fr.json\" with { type: \"json\" };\nimport ja from \"./locales/ja.json\" with { type: \"json\" };\nimport ko from \"./locales/ko.json\" with { type: \"json\" };\nimport pt from \"./locales/pt.json\" with { type: \"json\" };\nimport ptBR from \"./locales/pt-BR.json\" with { type: \"json\" };\nimport ro from \"./locales/ro.json\" with { type: \"json\" };\nimport ru from \"./locales/ru.json\" with { type: \"json\" };\nimport tr from \"./locales/tr.json\" with { type: \"json\" };\nimport zhCN from \"./locales/zh-CN.json\" with { type: \"json\" };\nimport zhTW from \"./locales/zh-TW.json\" with { type: \"json\" };\nimport zu from \"./locales/zu.json\" with { type: \"json\" };\n\n/**\n * Register projectpackager translations at module initialization.\n * This extends the core translations with package-specific keys.\n */\nI18nManager.registerTranslations(\"en\", en);\nI18nManager.registerTranslations(\"de\", de);\nI18nManager.registerTranslations(\"es\", es);\nI18nManager.registerTranslations(\"es-MX\", esMX);\nI18nManager.registerTranslations(\"fr\", fr);\nI18nManager.registerTranslations(\"ja\", ja);\nI18nManager.registerTranslations(\"ko\", ko);\nI18nManager.registerTranslations(\"pt\", pt);\nI18nManager.registerTranslations(\"pt-BR\", ptBR);\nI18nManager.registerTranslations(\"ro\", ro);\nI18nManager.registerTranslations(\"ru\", ru);\nI18nManager.registerTranslations(\"tr\", tr);\nI18nManager.registerTranslations(\"zh-CN\", zhCN);\nI18nManager.registerTranslations(\"zh-TW\", zhTW);\nI18nManager.registerTranslations(\"zu\", zu);\n\nexport type { TranslationKeys } from \"./locales/en.js\";\n// Export the translations for type inference\nexport { en };\n","import {\n type IToolLogger,\n LogLevel,\n LogMessage,\n type LogOptions,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Callback type for handling log messages\n * This is an implementation detail of ToolLogger\n */\nexport type LogHandler = (logMessage: LogMessage) => void;\n\n/**\n * Default log handler that writes formatted messages to console\n */\nlet globalLogHandler: LogHandler = (logMessage: LogMessage) => {\n const formattedMessage = logMessage.toFormattedString();\n switch (logMessage.logLevel) {\n case LogLevel.Debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.Info:\n console.info(formattedMessage);\n break;\n case LogLevel.Warn:\n console.warn(formattedMessage);\n break;\n case LogLevel.Error:\n console.error(formattedMessage);\n break;\n }\n};\n\n/**\n * Set the global log handler for all ToolLogger instances that don't specify one\n */\nexport function setGlobalLogHandler(handler: LogHandler): void {\n globalLogHandler = handler;\n}\n\n/**\n * Logger implementation for creating and outputting LogMessage instances\n * with consistent source and sourceTarget\n */\nexport class ToolLogger implements IToolLogger {\n constructor(\n private readonly source: string,\n private readonly sourceTarget: string,\n ) {}\n\n debug(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Debug, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n info(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n warn(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Warn, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n error(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Error, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n progress(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n log(message: string, logLevel: LogLevel, options?: LogOptions): void {\n const logMessage = new LogMessage(message, logLevel, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n logMessage(message: LogMessage): void {\n globalLogHandler(message);\n }\n}\n","import { execSync } from \"node:child_process\";\nimport { NodeFileSystem } from \"@uipath/filesystem\";\nimport type {\n IFileSystem,\n IToolLogger,\n} from \"@uipath/solutionpackager-tool-core\";\nimport { translate } from \"@uipath/solutionpackager-tool-core\";\nimport {\n ConsoleTelemetryProvider,\n type ITelemetryService,\n NodeContextStorage,\n type TelemetryContext,\n TelemetryService,\n} from \"@uipath/telemetry/node\";\nimport type { PackagerConfig } from \"./models/packager-config.js\";\nimport { setGlobalLogHandler } from \"./services/tool-logger.js\";\n\n/**\n * Base factory class containing common functionality for Node.js packager factories.\n */\nexport abstract class BaseNodePackagerFactory {\n /**\n * Returns the provided file system or creates a default NodeFileSystem.\n * @param config - Configuration options containing optional file system\n * @returns IFileSystem instance\n */\n protected getOrCreateFileSystem(config?: PackagerConfig): IFileSystem {\n return config?.fileSystem ?? new NodeFileSystem();\n }\n\n /**\n * Returns the provided telemetry service or creates a default one.\n * @param config - Configuration options containing optional telemetry service\n * @returns ITelemetryService instance\n */\n protected getOrCreateTelemetryService(\n config?: PackagerConfig,\n ): ITelemetryService {\n if (config?.telemetryService) {\n return config.telemetryService;\n }\n const provider = new ConsoleTelemetryProvider();\n const contextStorage = new NodeContextStorage<TelemetryContext>();\n return new TelemetryService(provider, contextStorage);\n }\n\n /**\n * Checks dotnet CLI availability and logs appropriate messages.\n * @param logger - Logger instance to use for logging\n */\n protected checkDotnetAvailability(logger: IToolLogger): void {\n logger.info(\"Checking for dotnet CLI availability...\");\n try {\n execSync(\"dotnet --version\", {\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n });\n logger.info(\"dotnet CLI is available.\");\n } catch {\n logger.error(\n \"dotnet CLI is not available. Workflow compiler functionality and package signing will not be available.\",\n );\n }\n }\n\n /**\n * Configures the global log handler if provided in config.\n * @param config - Configuration options containing optional log handler\n */\n protected configureLogHandler(config?: PackagerConfig): void {\n if (config?.logHandler) {\n setGlobalLogHandler(config.logHandler);\n }\n }\n\n /**\n * Configures the translation locale.\n * @param config - Configuration options containing optional language\n */\n protected configureLanguage(config?: PackagerConfig): void {\n const language = config?.language ?? \"en\";\n translate.setLocale(language);\n }\n}\n","import type { ConnectionInfo as ToolCoreConnectionInfo } from \"@uipath/solutionpackager-tool-core\";\nimport {\n LogLevel,\n type TargetFramework,\n} from \"@uipath/solutionpackager-tool-core\";\n\n// Re-export ConnectionInfo from tool.core for consistency\nexport type ConnectionInfo = ToolCoreConnectionInfo;\n\n/**\n * Rules configuration file type enum\n */\nexport enum RulesConfigFileType {\n Default = \"Default\",\n AutomationOps = \"AutomationOps\",\n Studio = \"Studio\",\n}\n\n/**\n * Validate options\n */\nexport interface ValidateOptions {\n /**\n * Whether to skip analysis\n */\n skipAnalyze: boolean;\n\n /**\n * Default severity level\n */\n defaultSeverity?: string;\n\n /**\n * Path to governance/policy file\n */\n governanceFilePath?: string;\n\n /**\n * Type of governance file\n */\n governanceFileType: RulesConfigFileType;\n}\n\n/**\n * Pack options\n */\nexport interface PackOptions {\n /**\n * Whether to skip dependency optimization\n */\n skipDependencyOptimization: boolean;\n\n /**\n * Whether to include sources\n */\n includeSources: boolean;\n\n /**\n * Whether to split packages\n */\n splitPackages: boolean;\n}\n\n/**\n * Publish information\n */\nexport interface PublishInfo {\n /**\n * publish request id.\n */\n id: string;\n}\n\n/**\n * Package signing information\n */\nexport interface PackageSigningInfo {\n /**\n * Path to the certificate file\n */\n certificatePath?: string;\n\n /**\n * Certificate password\n */\n certificatePassword?: string;\n\n /**\n * Timestamp server URL\n */\n timestampServer?: string;\n}\n\n/**\n * Base parameters for the packager tool\n */\nexport abstract class PackagerParameters {\n /**\n * Input path to the solution or project folder\n */\n inputPath!: string;\n\n /**\n * Log level for the packager\n */\n logLevel: LogLevel = LogLevel.Warn;\n\n /**\n * Output path for generated artifacts.\n * If not provided, a temporary path will be used.\n */\n outputPath?: string;\n\n /**\n * Target framework for the package\n */\n targetFramework?: TargetFramework;\n\n /**\n * Whether to exclude configured sources\n */\n excludeConfiguredSources: boolean = false;\n\n /**\n * Path to NuGet sources configuration file\n */\n nuGetSourcesConfigPath?: string;\n\n /**\n * Path to detailed log file\n */\n detailedLogPath?: string;\n\n /**\n * Connection information\n */\n connection?: ConnectionInfo;\n}\n","import { PackagerParameters } from \"./packager-parameters.js\";\n\n/**\n * Project-specific parameters for restore operations\n */\nexport class ProjectRestoreOptions extends PackagerParameters {}\n","import {\n RulesConfigFileType,\n type ValidateOptions,\n} from \"./packager-parameters.js\";\nimport { ProjectRestoreOptions } from \"./project-restore-options.js\";\n\n/**\n * Project-specific parameters for validate/analyze operations\n */\nexport class ProjectValidateOptions extends ProjectRestoreOptions {\n /**\n * Validate options\n */\n validateOptions: ValidateOptions = {\n skipAnalyze: false,\n governanceFileType: RulesConfigFileType.Default,\n };\n}\n","import { ProjectValidateOptions } from \"./project-validate-options.js\";\n\n/**\n * Project-specific parameters for build operations\n */\nexport class ProjectBuildOptions extends ProjectValidateOptions {}\n","import type { NugetPackageInfo } from \"@uipath/solutionpackager-tool-core\";\nimport type { PackageSigningInfo, PackOptions } from \"./packager-parameters.js\";\nimport { ProjectBuildOptions } from \"./project-build-options.js\";\n\n/**\n * Project-specific parameters extending build options with pack-specific settings\n */\nexport class ProjectPackOptions extends ProjectBuildOptions {\n destinationPath!: string;\n\n /**\n * NuGet package information\n */\n package!: NugetPackageInfo;\n\n /**\n * Package signing information\n */\n signingInfo?: PackageSigningInfo;\n\n /**\n * Pack options\n */\n packOptions?: PackOptions;\n}\n","import { execSync, spawn } from \"node:child_process\";\nimport type { IToolLogger } from \"@uipath/solutionpackager-tool-core\";\nimport {\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Provides package signing operations with availability checks.\n */\nexport interface IPackageSignService {\n /**\n * Sign a NuGet package using dotnet nuget sign.\n * @param packagePath - Path to the .nupkg file to sign\n * @param certificatePath - Path to the PFX certificate file\n * @param certificatePassword - Optional password for the certificate\n * @param timestampServer - Optional RFC 3161 timestamp server URL\n * @returns ToolResult indicating success or failure\n */\n signPackageAsync(\n packagePath: string,\n certificatePath: string,\n certificatePassword?: string,\n timestampServer?: string,\n ): Promise<ToolResult>;\n}\n\nexport class NodePackageSignService implements IPackageSignService {\n constructor(private readonly logger: IToolLogger) {}\n\n async signPackageAsync(\n packagePath: string,\n certificatePath: string,\n certificatePassword?: string,\n timestampServer?: string,\n ): Promise<ToolResult> {\n if (!this.checkAvailable()) {\n this.logger.error(\n translate.t(\"solutionpackager.signing.info.dotnetNotAvailable\"),\n );\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n translate.t(\n \"solutionpackager.signing.errors.dotnetNotAvailable\",\n ),\n );\n }\n\n const args = [\n \"nuget\",\n \"sign\",\n packagePath,\n \"--certificate-path\",\n certificatePath,\n \"--overwrite\",\n ];\n\n if (certificatePassword) {\n args.push(\"--certificate-password\", certificatePassword);\n }\n\n if (timestampServer) {\n args.push(\"--timestamper\", timestampServer);\n }\n\n return new Promise<ToolResult>((resolve) => {\n const childProcess = spawn(\"dotnet\", args, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n shell: false,\n windowsHide: true,\n });\n\n let stderr = \"\";\n\n childProcess.stdout?.on(\"data\", (data: Buffer) => {\n this.logger.info(data.toString().trim());\n });\n\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n stderr += data.toString();\n });\n\n childProcess.on(\"error\", (error: Error) => {\n this.logger.error(\n `Failed to start dotnet process: ${error.message}`,\n );\n resolve(\n ToolResult.error(\n ToolErrorCodes.InternalError,\n `Failed to start dotnet process: ${error.message}`,\n ),\n );\n });\n\n childProcess.on(\"exit\", (code: number | null) => {\n if (code === 0) {\n this.logger.info(\n `Successfully signed package: ${packagePath}`,\n );\n resolve(ToolResult.success());\n } else {\n const errorMessage =\n stderr.trim() ||\n `dotnet nuget sign exited with code ${code}`;\n this.logger.error(\n `Package signing failed: ${errorMessage}`,\n );\n resolve(\n ToolResult.error(\n ToolErrorCodes.InternalError,\n `Package signing failed: ${errorMessage}`,\n ),\n );\n }\n });\n });\n }\n\n private checkAvailable(): boolean {\n try {\n const output = execSync(\"dotnet nuget --version\", {\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n encoding: \"utf-8\",\n });\n this.logger.info(`dotnet CLI found, version ${output.trim()}`);\n return true;\n } catch {\n return false;\n }\n }\n}\n","export enum TelemetryNames {\n ProjectToolPack = \"ProjectPackager.Tool.Pack\",\n ProjectToolRestore = \"ProjectPackager.Tool.Restore\",\n ProjectToolValidate = \"ProjectPackager.Tool.Validate\",\n ProjectToolBuild = \"ProjectPackager.Tool.Build\",\n ProjectPackagerPack = \"ProjectPackager.Pack\",\n ProjectPackagerRestore = \"ProjectPackager.Restore\",\n ProjectPackagerValidate = \"ProjectPackager.Validate\",\n ProjectPackagerBuild = \"ProjectPackager.Build\",\n ProjectPackagerProjectLoaded = \"ProjectPackager.ProjectLoaded\",\n}\n","/**\n * Interface for NuGet package operations\n */\nexport interface IPackService {\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string;\n}\n\n/**\n * Service for NuGet package operations\n */\nexport class PackService implements IPackService {\n // Matches non-word characters except dots and dashes (equivalent to C# [\\W-[.-]])\n private readonly disallowedCharsRegex = /[^\\w.-]/g;\n private readonly spacesDotRegex = /[\\s.]+/g;\n // Matches zero or more dots, followed by dash or colon, followed by zero or more dots (equivalent to C# \\.*[-:]\\..*)\n private readonly dotDashRegex = /\\.*[-:]\\.*/g;\n private readonly MaxPackageIdLength = 100;\n\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string {\n packageId = packageId.trim();\n packageId = packageId.replace(this.spacesDotRegex, \".\");\n packageId = packageId.replace(this.dotDashRegex, \"-\");\n packageId = packageId.replace(this.disallowedCharsRegex, \"_\");\n\n if (packageId.length > this.MaxPackageIdLength) {\n throw new Error(\n `Package id ${packageId} exceeds the characters limit of ${this.MaxPackageIdLength}`,\n );\n }\n\n return packageId;\n }\n}\n","import {\n type IFileSystem,\n type IToolLogger,\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport {\n type PackagerParameters,\n RulesConfigFileType,\n type ValidateOptions,\n} from \"../models/packager-parameters.js\";\n\n/**\n * Interface for a pack options validator\n */\nexport interface IPackagerParametersValidator<\n TOptions extends PackagerParameters,\n> {\n /**\n * Validate pack options\n * @param options Pack options to validate\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating validation success or failure\n */\n validateAsync(\n options: TOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\n/**\n * Base validator for packager parameters.\n * Contains common validation logic shared by solution and project validators.\n */\nexport class PackagerParametersValidator<TOptions extends PackagerParameters>\n implements IPackagerParametersValidator<TOptions>\n{\n constructor(\n protected readonly logger: IToolLogger,\n protected readonly fileSystem: IFileSystem,\n ) {}\n\n async validateAsync(\n _options: TOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return ToolResult.success();\n }\n\n protected validateDestinationPath(destinationPath: string): ToolResult {\n if (!destinationPath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.destinationNotDefined\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n return ToolResult.success();\n }\n\n protected async validateGovernanceOptions(\n validateOptions: ValidateOptions,\n ): Promise<ToolResult> {\n if (\n validateOptions.governanceFileType === RulesConfigFileType.Default\n ) {\n if (validateOptions.governanceFilePath) {\n this.logger.warn(\n `Governance file path '${validateOptions.governanceFilePath}' will be ignored when governance file type is Default`,\n );\n }\n return ToolResult.success();\n }\n\n if (!validateOptions.governanceFilePath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceRequired\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n\n try {\n const stat = await this.fileSystem.stat(\n validateOptions.governanceFilePath,\n );\n if (!stat) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceFileInfo\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n if (stat.isDirectory()) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceInvalidFile\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorLog = `Governance file not found or inaccessible: ${validateOptions.governanceFilePath}. Error: ${errorMessage}`;\n this.logger.error(errorLog);\n return ToolResult.error(ToolErrorCodes.InternalError, errorLog);\n }\n\n this.logger.info(\n `Using Studio governance file: ${validateOptions.governanceFilePath}`,\n );\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project build options validator\n */\nexport type IProjectBuildOptionsValidator =\n IPackagerParametersValidator<ProjectBuildOptions>;\n\n/**\n * Validator for project build options.\n * Validates governance options required for build operations.\n */\nexport class ProjectBuildOptionsValidator\n extends PackagerParametersValidator<ProjectBuildOptions>\n implements IProjectBuildOptionsValidator\n{\n async validateAsync(\n options: ProjectBuildOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IFileSystem,\n Path,\n type ProjectType,\n ProjectTypes,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject, UiProject } from \"../models/project-models.js\";\n\n/**\n * Interface for loading project information from the file system\n */\nexport interface IProjectLoader {\n /**\n * Load project information from a directory path.\n * Searches for project.uiproj first, falls back to webAppManifest.json.\n * @param projectPath Path to the project directory\n * @returns Loaded project information\n * @throws Error if neither project.uiproj nor webAppManifest.json is found\n */\n loadProject(projectPath: string): Promise<LoadedUiProject>;\n}\n\nexport class ProjectLoader implements IProjectLoader {\n static readonly ProjectFileName = \"project.uiproj\";\n static readonly WebAppManifestFileName = \"webAppManifest.json\";\n\n constructor(private readonly fileSystem: IFileSystem) {}\n\n async loadProject(projectPath: string): Promise<LoadedUiProject> {\n if (!projectPath) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.pathRequired\",\n ),\n );\n }\n\n // Try project.uiproj first\n const projectFilePath = Path.join(\n projectPath,\n ProjectLoader.ProjectFileName,\n );\n const projectFileExists = await this.fileSystem.exists(projectFilePath);\n\n if (projectFileExists) {\n return await this.loadFromProjectFile(projectPath, projectFilePath);\n }\n\n // Fall back to webAppManifest.json\n const webAppManifestPath = Path.join(\n projectPath,\n ProjectLoader.WebAppManifestFileName,\n );\n const webAppManifestExists =\n await this.fileSystem.exists(webAppManifestPath);\n\n if (webAppManifestExists) {\n return this.loadFromWebAppManifest(projectPath, webAppManifestPath);\n }\n\n throw new Error(\n translate.t(\"solutionpackager.projectLoader.errors.noProjectFile\", {\n projectFile: ProjectLoader.ProjectFileName,\n manifestFile: ProjectLoader.WebAppManifestFileName,\n path: projectPath,\n }),\n );\n }\n\n private async loadFromProjectFile(\n projectPath: string,\n projectFilePath: string,\n ): Promise<LoadedUiProject> {\n const fileContent = await this.fileSystem.readFile(projectFilePath);\n if (!fileContent) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.readFailed\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n const json =\n typeof fileContent === \"string\"\n ? fileContent\n : new TextDecoder(\"utf-8\").decode(fileContent);\n\n const projectData = JSON.parse(json) as UiProject;\n\n const projectType = projectData?.ProjectType || projectData?.type;\n if (!projectData || !projectType) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.invalidProject\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n return {\n type: projectType as ProjectType,\n name: projectData.Name || Path.basename(projectPath),\n projectPath,\n projectFilePath,\n };\n }\n\n private loadFromWebAppManifest(\n projectPath: string,\n webAppManifestPath: string,\n ): LoadedUiProject {\n // webAppManifest.json presence indicates an AppV2 project\n const folderName = Path.basename(projectPath);\n\n return {\n type: ProjectTypes.AppV2,\n name: folderName,\n projectPath,\n projectFilePath: webAppManifestPath,\n };\n }\n}\n","import type {\n IFileSystem,\n IProjectPackOptions,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject } from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackService } from \"./pack-service.js\";\n\n/**\n * Interface for building project pack options\n */\nexport interface IProjectPackOptionsBuilder {\n /**\n * Build project pack options from project parameters and loaded project info\n */\n buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions>;\n}\n\nexport class ProjectPackOptionsBuilder implements IProjectPackOptionsBuilder {\n constructor(\n private readonly packService: IPackService,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions> {\n if (!parameters.outputPath) {\n throw new Error(\"Output path is required for Pack command\");\n }\n\n await this.fileSystem.mkdir(parameters.outputPath);\n\n // Use project name if package id is not set or is empty\n const packageId =\n !parameters.package.id || parameters.package.id.trim() === \"\"\n ? project.name\n : parameters.package.id;\n\n const packageInfo = {\n ...parameters.package,\n id: this.packService.sanitizePackageId(packageId),\n };\n\n return {\n projectPath: project.projectPath,\n excludeConfiguredSources:\n parameters.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: parameters.nuGetSourcesConfigPath,\n logLevel: parameters.logLevel,\n skipAnalyze: parameters.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: parameters.detailedLogPath,\n policyFilePath: parameters.validateOptions.governanceFilePath,\n policyFileType: parameters.validateOptions.governanceFileType,\n outputPath: parameters.outputPath,\n outputType: undefined,\n projectType: project.type,\n package: packageInfo,\n skipDependencyOptimization:\n parameters.packOptions?.skipDependencyOptimization ?? false,\n includeSources: parameters.packOptions?.includeSources ?? false,\n splitPackages: parameters.packOptions?.splitPackages ?? false,\n };\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackagerParametersValidator } from \"./packager-parameters-validator.js\";\nimport { ProjectBuildOptionsValidator } from \"./project-build-options-validator.js\";\n\n/**\n * Interface for the project pack options validator\n */\nexport type IProjectPackOptionsValidator =\n IPackagerParametersValidator<ProjectPackOptions>;\n\n/**\n * Validator for project pack options.\n * Validates destination path and governance options required for pack operations.\n */\nexport class ProjectPackOptionsValidator\n extends ProjectBuildOptionsValidator\n implements IProjectPackOptionsValidator\n{\n async validateAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const destinationResult = this.validateDestinationPath(\n options.destinationPath,\n );\n if (!destinationResult.isSuccess) {\n return destinationResult;\n }\n\n return await super.validateAsync(options, cancellationToken);\n }\n}\n","import {\n type IProjectBuildOptions,\n type IProjectPackOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type ProjectOperationContext,\n type ProjectTool,\n ToolErrorCodes,\n ToolResult,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackageSigningInfo } from \"../models/packager-parameters.js\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport type { IToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Interface for executing project tool operations\n */\nexport interface IProjectToolExecutor {\n restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\nexport class ProjectToolExecutor implements IProjectToolExecutor {\n constructor(\n private readonly toolsFactory: IToolsFactory,\n private readonly telemetry: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {}\n\n async restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolRestore,\n project.Type,\n async () => tool.restoreAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolValidate,\n project.Type,\n async () => tool.validateAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolBuild,\n project.Type,\n async () => tool.buildAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(\n project,\n context,\n async (tool) => {\n const result =\n await this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolPack,\n project.Type,\n async () => {\n return await tool.packAsync(\n options,\n cancellationToken,\n );\n },\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n );\n\n // If pack was successful and signing info with certificate path is provided, sign all packages\n if (\n result.isSuccess &&\n signingInfo?.certificatePath &&\n result.packages.length > 0\n ) {\n const signResult = await this.signPackagesAsync(\n result.packages,\n signingInfo,\n );\n if (!signResult.isSuccess) {\n return signResult;\n }\n }\n\n return result;\n },\n );\n }\n\n /**\n * Execute an operation on a project tool with proper creation and disposal.\n */\n private async executeToolOperationAsync(\n project: UiPathProject,\n context: ProjectOperationContext | undefined,\n operation: (tool: ProjectTool) => Promise<ToolResult>,\n ): Promise<ToolResult> {\n try {\n const tool = await this.toolsFactory.createProjectToolAsync(\n project,\n context,\n );\n\n try {\n return await operation(tool);\n } finally {\n const disposeResult = tool.dispose();\n if (disposeResult instanceof Promise) {\n await disposeResult;\n }\n }\n } catch (error) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n /**\n * Sign all packages using the package sign service.\n * @param packages - Array of package paths to sign\n * @param signingInfo - Signing configuration\n * @returns ToolResult indicating success or failure\n */\n private async signPackagesAsync(\n packages: string[],\n signingInfo: PackageSigningInfo,\n ): Promise<ToolResult> {\n // Check if package signing service is available\n if (!this.packageSignService) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n \"Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.\",\n );\n }\n\n const certificatePath = signingInfo.certificatePath as string;\n\n // Sign all packages in parallel\n const signResults = await Promise.all(\n packages.map((packagePath) =>\n this.packageSignService?.signPackageAsync(\n packagePath,\n certificatePath,\n signingInfo.certificatePassword,\n signingInfo.timestampServer,\n ),\n ),\n );\n\n // Check if any signing failed\n const failedResult = signResults.find(\n (result) => result && !result.isSuccess,\n );\n if (failedResult) {\n return failedResult;\n }\n\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project validate options validator\n */\nexport type IProjectValidateOptionsValidator =\n IPackagerParametersValidator<ProjectValidateOptions>;\n\n/**\n * Validator for project validate options.\n * Validates governance options required for validate/analyze operations.\n */\nexport class ProjectValidateOptionsValidator\n extends PackagerParametersValidator<ProjectValidateOptions>\n implements IProjectValidateOptionsValidator\n{\n async validateAsync(\n options: ProjectValidateOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import type {\n IFileSystem,\n IToolsFactoryRepository,\n ProjectOperationContext,\n ProjectTool,\n SolutionTool,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\n\n/**\n * Factory interface for creating solution and project tools\n */\nexport interface IToolsFactory {\n /**\n * Create a solution tool for the specified solution\n * @throws Error if no factory is registered\n */\n createSolutionToolAsync(solutionName: string): Promise<SolutionTool>;\n\n /**\n * Create a project tool for the specified project\n * @param project - The project to create a tool for\n * @param context - Optional operation context with id and sibling project info\n * @throws Error if no factory is found for the project type\n */\n createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool>;\n}\n\n/**\n * Factory for creating solution and project tools\n */\nexport class ToolsFactory implements IToolsFactory {\n constructor(\n private readonly repository: IToolsFactoryRepository,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async createSolutionToolAsync(solutionName: string): Promise<SolutionTool> {\n const logger = new ToolLogger(\"ResourceBuilder\", solutionName);\n const factory = this.repository.getSolutionToolFactory();\n return await factory.createAsync(logger, this.fileSystem);\n }\n\n async createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool> {\n const sourceTarget = getSourceTarget();\n const logger = new ToolLogger(project.Type, sourceTarget);\n\n if (!project.ProjectPath) {\n throw new Error(`Project path not set for project: ${project.Id}`);\n }\n\n const factory = this.repository.getProjectToolFactory(project.Type);\n return await factory.createAsync(logger, this.fileSystem, context);\n\n function getSourceTarget(): string {\n // Split by both forward slash and backslash, get first token (folder name)\n const segments = project.ProjectRelativePath.split(/[/\\\\]/);\n if (segments.length > 1) {\n return segments[0];\n }\n // Standalone project-packager: no folder prefix, use project name\n return project.Id;\n }\n }\n}\n","import {\n toolsFactoryRepository as defaultToolsFactoryRepository,\n type IFileSystem,\n type IProjectBuildOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type IToolsFactoryRepository,\n type NugetPackageInfo,\n NugetPackager,\n Path,\n TemporaryStorageService,\n ToolErrorCodes,\n ToolResult,\n translate,\n ZipService,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackagerParameters } from \"../models/packager-parameters.js\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport type {\n LoadedUiProject,\n UiPathProject,\n} from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { ProjectRestoreOptions } from \"../models/project-restore-options.js\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport { PackService } from \"./pack-service.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport {\n type IProjectBuildOptionsValidator,\n ProjectBuildOptionsValidator,\n} from \"./project-build-options-validator.js\";\nimport { type IProjectLoader, ProjectLoader } from \"./project-loader.js\";\nimport {\n type IProjectPackOptionsBuilder,\n ProjectPackOptionsBuilder,\n} from \"./project-pack-options-builder.js\";\nimport {\n type IProjectPackOptionsValidator,\n ProjectPackOptionsValidator,\n} from \"./project-pack-options-validator.js\";\nimport {\n type IProjectToolExecutor,\n ProjectToolExecutor,\n} from \"./project-tool-executor.js\";\nimport {\n type IProjectValidateOptionsValidator,\n ProjectValidateOptionsValidator,\n} from \"./project-validate-options-validator.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\nimport { type IToolsFactory, ToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Package stream containing package data\n */\nexport interface PackageStream {\n /** Name of the package file */\n name: string;\n /** Package file data */\n data: Uint8Array;\n}\n\n/**\n * Interface for the ProjectPackager component.\n * Provides methods to setup and pack individual UiPath projects.\n */\nexport interface IProjectPackager {\n /**\n * File system instance\n */\n readonly fileSystem: IFileSystem;\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n canPackProjectAsync(projectPath: string): Promise<boolean>;\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string>;\n\n /**\n * Restore project dependencies.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Analyze (validate) a project.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Build a project.\n * @param options Project options containing input path, output path, and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]>;\n}\n\nexport class ProjectPackager implements IProjectPackager {\n private readonly repository: IToolsFactoryRepository;\n private readonly temporaryStorage: TemporaryStorageService;\n private readonly zipService: ZipService;\n private readonly logger: ToolLogger;\n private readonly optionsBuilder: IProjectPackOptionsBuilder;\n private readonly toolsFactory: IToolsFactory;\n private readonly projectExecutor: IProjectToolExecutor;\n private readonly projectLoader: IProjectLoader;\n private readonly validateOptionsValidator: IProjectValidateOptionsValidator;\n private readonly buildOptionsValidator: IProjectBuildOptionsValidator;\n private readonly packOptionsValidator: IProjectPackOptionsValidator;\n private readonly nugetPackager: NugetPackager;\n\n constructor(\n public readonly fileSystem: IFileSystem,\n private readonly telemetryService: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {\n this.repository = defaultToolsFactoryRepository;\n this.temporaryStorage = new TemporaryStorageService(this.fileSystem);\n this.zipService = new ZipService(this.fileSystem);\n this.nugetPackager = new NugetPackager(this.fileSystem);\n this.logger = new ToolLogger(\"ProjectPackager\", \"PackProject\");\n this.validateOptionsValidator = new ProjectValidateOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.buildOptionsValidator = new ProjectBuildOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.packOptionsValidator = new ProjectPackOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n\n const packService = new PackService();\n this.optionsBuilder = new ProjectPackOptionsBuilder(\n packService,\n this.fileSystem,\n );\n\n this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);\n this.projectExecutor = new ProjectToolExecutor(\n this.toolsFactory,\n this.telemetryService,\n this.packageSignService,\n );\n this.projectLoader = new ProjectLoader(this.fileSystem);\n }\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n async canPackProjectAsync(projectPath: string): Promise<boolean> {\n const project = await this.projectLoader.loadProject(projectPath);\n return this.repository.canHandleProject(project.type);\n }\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n async setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string> {\n this.telemetryService.setOperationId(operationId);\n\n await this.temporaryStorage.cleanup();\n\n if (typeof input === \"string\") {\n return input;\n }\n\n const inputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\"input\");\n await this.zipService.extractAsync(input, inputPath);\n\n // Check if the extracted content is inside a single root folder\n const entries = await this.fileSystem.readdir(inputPath);\n if (entries.length === 1) {\n const innerPath = Path.join(inputPath, entries[0]);\n const stat = await this.fileSystem.stat(innerPath);\n if (stat?.isDirectory()) {\n return innerPath;\n }\n }\n\n return inputPath;\n }\n\n /**\n * Restore project dependencies.\n */\n async restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeProjectOperationAsync(\n options,\n \"Restore\",\n TelemetryNames.ProjectPackagerRestore,\n async (uiPathProject, loadedProject) => {\n const restoreOptions: IProjectRestoreOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n outputPath: options.outputPath,\n };\n return await this.projectExecutor.restoreAsync(\n restoreOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Validate a project.\n */\n async validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult =\n await this.validateOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Validate\",\n TelemetryNames.ProjectPackagerValidate,\n async (uiPathProject, loadedProject) => {\n const validateOptions: IProjectValidateOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n defaultSeverity: options.validateOptions.defaultSeverity,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n };\n return await this.projectExecutor.validateAsync(\n validateOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Build a project.\n */\n async buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult = await this.buildOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Build\",\n TelemetryNames.ProjectPackagerBuild,\n async (uiPathProject, loadedProject) => {\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n const buildOptions: IProjectBuildOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n outputPath: options.outputPath,\n outputType: undefined,\n projectType: uiPathProject.Type,\n };\n return await this.projectExecutor.buildAsync(\n buildOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n async packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n TelemetryNames.ProjectPackagerPack,\n async () => {\n try {\n let result = await this.packOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n\n if (!result.isSuccess) {\n return result;\n }\n\n // Set default outputPath if not provided\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n // Load project information\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n this.telemetryService.trackEvent(\n TelemetryNames.ProjectPackagerProjectLoaded,\n { projectId: loadedProject.name },\n );\n\n // Build project pack options\n const projectPackOptions =\n await this.optionsBuilder.buildProjectPackOptions(\n options,\n loadedProject,\n );\n\n // Create a UiPathProject from loaded project for the executor\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n // Execute the pack operation\n result = await this.projectExecutor.packAsync(\n projectPackOptions,\n uiPathProject,\n undefined,\n options.signingInfo,\n cancellationToken,\n );\n\n // Copy packages to destination path if successful\n if (result.isSuccess && result.packages.length > 0) {\n const destinationPackages =\n await this.copyPackagesToDestination(\n result.packages,\n options.destinationPath,\n projectPackOptions.package,\n );\n result = new ToolResult(\n ToolErrorCodes.Success,\n undefined,\n destinationPackages,\n );\n }\n\n // Log the result\n if (result.isSuccess) {\n this.logger.info(\n `Project pack completed successfully. Packages: ${result.packages.join(\", \")}`,\n );\n } else {\n this.logger.error(\n `Project pack failed with error code ${result.errorCode}: ${result.message}`,\n );\n }\n\n return result;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project pack failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n async getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]> {\n if (!result.isSuccess) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToGetStreams\",\n {\n errorCode: result.errorCode,\n message: result.message ?? \"\",\n },\n ),\n );\n }\n\n if (!result.packages || result.packages.length === 0) {\n return [];\n }\n\n const packageStreams: PackageStream[] = [];\n\n for (const packagePath of result.packages) {\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n const name = packagePath.split(/[\\\\/]/).pop() || packagePath;\n\n packageStreams.push({ name, data });\n }\n\n return packageStreams;\n }\n\n /**\n * Common logic for restore, analyze, and build operations:\n * validates options, loads the project, executes the operation, and handles errors.\n */\n private async executeProjectOperationAsync(\n options: PackagerParameters,\n operationName: string,\n telemetryName: TelemetryNames,\n operation: (\n project: UiPathProject,\n loadedProject: LoadedUiProject,\n ) => Promise<ToolResult>,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n telemetryName,\n async () => {\n try {\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n const operationResult = await operation(\n uiPathProject,\n loadedProject,\n );\n\n if (operationResult.isSuccess) {\n this.logger.info(\n `Project ${operationName.toLowerCase()} completed successfully.`,\n );\n } else {\n this.logger.error(\n `Project ${operationName.toLowerCase()} failed with error code ${operationResult.errorCode}: ${operationResult.message}`,\n );\n }\n\n return operationResult;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project ${operationName.toLowerCase()} failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Copy packages from the output path to the destination path.\n * Handles file paths, directories with .nupkg files, and directories with\n * unpacked NuGet content (e.g., content/, lib/ folders from WorkflowCompiler).\n * @param packagePaths Paths to the package files or directories\n * @param destinationPath Destination directory\n * @param packageInfo NuGet package info for creating .nupkg from unpacked content\n * @returns Paths to the copied package files\n */\n private async copyPackagesToDestination(\n packagePaths: string[],\n destinationPath: string,\n packageInfo: NugetPackageInfo,\n ): Promise<string[]> {\n await this.fileSystem.mkdir(destinationPath);\n\n const destinationPackages: string[] = [];\n\n for (const packagePath of packagePaths) {\n const stat = await this.fileSystem.stat(packagePath);\n\n if (stat?.isDirectory()) {\n // If the path is a directory, find .nupkg files inside it\n const files = await this.fileSystem.readdir(packagePath);\n const nupkgFiles = files.filter((f) => f.endsWith(\".nupkg\"));\n\n if (nupkgFiles.length > 0) {\n // Directory contains .nupkg files - copy them\n for (const nupkgFile of nupkgFiles) {\n const filePath = Path.join(packagePath, nupkgFile);\n const destPath = Path.join(destinationPath, nupkgFile);\n const data = await this.fileSystem.readFile(filePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: filePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n } else {\n // Directory contains unpacked NuGet content (e.g., content/, lib/) -\n // use NugetPackager to create the .nupkg file\n const nupkgFileName = `${packageInfo.id}.${packageInfo.version}.nupkg`;\n const destPath = Path.join(destinationPath, nupkgFileName);\n const packResult = await this.nugetPackager.packAsync(\n packagePath,\n packageInfo,\n destPath,\n );\n destinationPackages.push(packResult.outputPath);\n }\n } else {\n const fileName =\n packagePath.split(/[\\\\/]/).pop() || packagePath;\n const destPath = Path.join(destinationPath, fileName);\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n }\n\n return destinationPackages;\n }\n}\n","import { BaseNodePackagerFactory } from \"./base-node-packager-factory.js\";\nimport type { PackagerConfig } from \"./models/packager-config.js\";\nimport { NodePackageSignService } from \"./services/package-sign-service.js\";\nimport {\n type IProjectPackager,\n ProjectPackager,\n} from \"./services/project-packager.js\";\nimport { ToolLogger } from \"./services/tool-logger.js\";\n\n/**\n * Factory class for creating ProjectPackager instances configured for Node.js usage.\n *\n * Default project tools are automatically registered via side-effect imports:\n * - Project tools: ConnectorTool, WorkflowCompilerTool, ApiWorkflowTool, FlowTool, WebAppTool\n *\n * @example\n * ```typescript\n * const packager = await createNodeProjectPackager({\n * logHandler: (message) => console.log(message)\n * });\n * ```\n */\nclass NodeProjectPackagerFactory extends BaseNodePackagerFactory {\n /**\n * Creates a ProjectPackager instance with all default tools registered.\n * @param config - Optional configuration options for the ProjectPackager\n * @returns Promise<IProjectPackager> - A fully configured ProjectPackager instance ready for use in Node.js.\n */\n async createAsync(config?: PackagerConfig): Promise<IProjectPackager> {\n const logger = new ToolLogger(\"ProjectPackagerFactory\", \"Create\");\n\n this.configureLanguage(config);\n this.configureLogHandler(config);\n\n logger.info(\"Creating ProjectPackager instance...\");\n\n const fileSystem = this.getOrCreateFileSystem(config);\n const telemetryService = this.getOrCreateTelemetryService(config);\n const packageSignService = new NodePackageSignService(logger);\n const projectPackager = new ProjectPackager(\n fileSystem,\n telemetryService,\n packageSignService,\n );\n\n this.checkDotnetAvailability(logger);\n\n logger.info(\"ProjectPackager created successfully.\");\n return projectPackager;\n }\n}\n\n/**\n * Creates a ProjectPackager instance configured for Node.js usage.\n *\n * This is a convenience function that creates a NodeProjectPackagerFactory and calls createAsync.\n *\n * @param options - Configuration options for the ProjectPackager\n * @returns Promise<IProjectPackager> - A fully configured ProjectPackager instance ready for use in Node.js.\n *\n * @example\n * ```typescript\n * // Simple usage with default tools\n * const packager = await createNodeProjectPackager();\n *\n * // With custom log handler\n * const packager = await createNodeProjectPackager({\n * logHandler: (message) => console.log(message)\n * });\n * ```\n */\nexport async function createNodeProjectPackager(\n options?: PackagerConfig,\n): Promise<IProjectPackager> {\n const factory = new NodeProjectPackagerFactory();\n return factory.createAsync(options);\n}\n"],"names":["JSON","en","I18nManager","de","es","esMX","fr","ja","ko","pt","ptBR","ro","ru","tr","zhCN","zhTW","zu","globalLogHandler","logMessage","formattedMessage","LogLevel","console","setGlobalLogHandler","handler","ToolLogger","message","options","LogMessage","logLevel","source","sourceTarget","BaseNodePackagerFactory","config","NodeFileSystem","provider","ConsoleTelemetryProvider","contextStorage","NodeContextStorage","TelemetryService","logger","execSync","language","translate","RulesConfigFileType","PackagerParameters","ProjectRestoreOptions","ProjectValidateOptions","ProjectBuildOptions","ProjectPackOptions","NodePackageSignService","packagePath","certificatePath","certificatePassword","timestampServer","ToolResult","ToolErrorCodes","args","Promise","resolve","childProcess","spawn","stderr","data","error","code","errorMessage","output","TelemetryNames","PackService","packageId","Error","PackagerParametersValidator","_options","_cancellationToken","destinationPath","validateOptions","stat","String","errorLog","fileSystem","ProjectBuildOptionsValidator","ProjectLoader","projectPath","projectFilePath","Path","projectFileExists","webAppManifestPath","webAppManifestExists","fileContent","json","TextDecoder","projectData","projectType","folderName","ProjectTypes","ProjectPackOptionsBuilder","parameters","project","packageInfo","undefined","packService","ProjectPackOptionsValidator","cancellationToken","destinationResult","ProjectToolExecutor","context","tool","signingInfo","result","signResult","operation","disposeResult","packages","signResults","failedResult","toolsFactory","telemetry","packageSignService","ProjectValidateOptionsValidator","ToolsFactory","solutionName","factory","getSourceTarget","segments","repository","ProjectPackager","input","operationId","inputPath","entries","innerPath","uiPathProject","loadedProject","restoreOptions","validationResult","buildOptions","projectPackOptions","destinationPackages","packageStreams","name","operationName","telemetryName","operationResult","packagePaths","files","nupkgFiles","f","nupkgFile","filePath","destPath","nupkgFileName","packResult","fileName","telemetryService","defaultToolsFactoryRepository","TemporaryStorageService","ZipService","NugetPackager","NodeProjectPackagerFactory","projectPackager","createNodeProjectPackager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sources":["webpack://projectpackager/./src/i18n/locales/en.ts","webpack://projectpackager/./src/i18n/index.ts","webpack://projectpackager/./src/services/tool-logger.ts","webpack://projectpackager/./src/base-node-packager-factory.ts","webpack://projectpackager/./src/models/packager-parameters.ts","webpack://projectpackager/./src/models/project-restore-options.ts","webpack://projectpackager/./src/models/project-validate-options.ts","webpack://projectpackager/./src/models/project-build-options.ts","webpack://projectpackager/./src/models/project-pack-options.ts","webpack://projectpackager/./src/services/package-sign-service.ts","webpack://projectpackager/./src/telemetry-names.ts","webpack://projectpackager/./src/services/pack-service.ts","webpack://projectpackager/./src/services/packager-parameters-validator.ts","webpack://projectpackager/./src/services/project-build-options-validator.ts","webpack://projectpackager/./src/services/project-loader.ts","webpack://projectpackager/./src/services/project-pack-options-builder.ts","webpack://projectpackager/./src/services/project-pack-options-validator.ts","webpack://projectpackager/./src/services/project-tool-executor.ts","webpack://projectpackager/./src/services/project-validate-options-validator.ts","webpack://projectpackager/./src/services/tools-factory.ts","webpack://projectpackager/./src/services/project-packager.ts","webpack://projectpackager/./src/node-project-packager-factory.ts"],"sourcesContent":["/**\n * English translations for projectpackager package.\n * These translations are registered alongside core translations via I18nManager.\n */\n\nexport const en = {\n solutionpackager: {\n projectLoader: {\n errors: {\n pathRequired: \"Project directory path is required\",\n noProjectFile:\n \"No {projectFile} or {manifestFile} found in directory: {path}\",\n readFailed: \"Failed to read project file: {path}\",\n invalidProject:\n \"Invalid project file: {path}. Missing ProjectType field.\",\n },\n },\n validator: {\n errors: {\n destinationNotDefined: \"Destination path is not defined\",\n governanceRequired:\n \"Governance file path is required when governance file type is not Default\",\n governanceFileInfo: \"Unable to get file information: {path}\",\n governanceInvalidFile:\n \"Governance file path is not a valid file: {path}\",\n },\n },\n packager: {\n errors: {\n failedToGetStreams:\n \"Cannot get package streams from failed result. Error code: {errorCode}, message: {message}\",\n failedToReadPackage: \"Failed to read package file: {path}\",\n },\n },\n signing: {\n errors: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Package signing requires dotnet CLI to be installed.\",\n },\n info: {\n dotnetNotAvailable:\n \"dotnet CLI is not available. Cannot sign package.\",\n },\n },\n },\n} as const;\n\nexport type TranslationKeys = typeof en;\n","/**\n * i18n module for projectpackager package.\n * Registers projectpackager-specific translations.\n */\n\nimport { I18nManager } from \"@uipath/solutionpackager-tool-core\";\nimport de from \"./locales/de.json\" with { type: \"json\" };\nimport { en } from \"./locales/en.js\";\nimport es from \"./locales/es.json\" with { type: \"json\" };\nimport esMX from \"./locales/es-MX.json\" with { type: \"json\" };\nimport fr from \"./locales/fr.json\" with { type: \"json\" };\nimport ja from \"./locales/ja.json\" with { type: \"json\" };\nimport ko from \"./locales/ko.json\" with { type: \"json\" };\nimport pt from \"./locales/pt.json\" with { type: \"json\" };\nimport ptBR from \"./locales/pt-BR.json\" with { type: \"json\" };\nimport ro from \"./locales/ro.json\" with { type: \"json\" };\nimport ru from \"./locales/ru.json\" with { type: \"json\" };\nimport tr from \"./locales/tr.json\" with { type: \"json\" };\nimport zhCN from \"./locales/zh-CN.json\" with { type: \"json\" };\nimport zhTW from \"./locales/zh-TW.json\" with { type: \"json\" };\nimport zu from \"./locales/zu.json\" with { type: \"json\" };\n\n/**\n * Register projectpackager translations at module initialization.\n * This extends the core translations with package-specific keys.\n */\nI18nManager.registerTranslations(\"en\", en);\nI18nManager.registerTranslations(\"de\", de);\nI18nManager.registerTranslations(\"es\", es);\nI18nManager.registerTranslations(\"es-MX\", esMX);\nI18nManager.registerTranslations(\"fr\", fr);\nI18nManager.registerTranslations(\"ja\", ja);\nI18nManager.registerTranslations(\"ko\", ko);\nI18nManager.registerTranslations(\"pt\", pt);\nI18nManager.registerTranslations(\"pt-BR\", ptBR);\nI18nManager.registerTranslations(\"ro\", ro);\nI18nManager.registerTranslations(\"ru\", ru);\nI18nManager.registerTranslations(\"tr\", tr);\nI18nManager.registerTranslations(\"zh-CN\", zhCN);\nI18nManager.registerTranslations(\"zh-TW\", zhTW);\nI18nManager.registerTranslations(\"zu\", zu);\n\n// Export the translations for type inference\nexport { en };\nexport type { TranslationKeys } from \"./locales/en.js\";\n","import {\n type IToolLogger,\n LogLevel,\n LogMessage,\n type LogOptions,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Callback type for handling log messages\n * This is an implementation detail of ToolLogger\n */\nexport type LogHandler = (logMessage: LogMessage) => void;\n\n/**\n * Default log handler that writes formatted messages to console\n */\nlet globalLogHandler: LogHandler = (logMessage: LogMessage) => {\n const formattedMessage = logMessage.toFormattedString();\n switch (logMessage.logLevel) {\n case LogLevel.Debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.Info:\n console.info(formattedMessage);\n break;\n case LogLevel.Warn:\n console.warn(formattedMessage);\n break;\n case LogLevel.Error:\n console.error(formattedMessage);\n break;\n }\n};\n\n/**\n * Set the global log handler for all ToolLogger instances that don't specify one\n */\nexport function setGlobalLogHandler(handler: LogHandler): void {\n globalLogHandler = handler;\n}\n\n/**\n * Logger implementation for creating and outputting LogMessage instances\n * with consistent source and sourceTarget\n */\nexport class ToolLogger implements IToolLogger {\n constructor(\n private readonly source: string,\n private readonly sourceTarget: string,\n ) {}\n\n debug(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Debug, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n info(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n warn(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Warn, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n error(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Error, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n progress(message: string, options?: LogOptions): void {\n const logMessage = new LogMessage(message, LogLevel.Info, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n log(message: string, logLevel: LogLevel, options?: LogOptions): void {\n const logMessage = new LogMessage(message, logLevel, {\n source: this.source,\n sourceTarget: this.sourceTarget,\n ...options,\n });\n globalLogHandler(logMessage);\n }\n\n logMessage(message: LogMessage): void {\n globalLogHandler(message);\n }\n}\n","import { execSync } from \"node:child_process\";\nimport { NodeFileSystem } from \"@uipath/filesystem\";\nimport type {\n IFileSystem,\n IToolLogger,\n} from \"@uipath/solutionpackager-tool-core\";\nimport { translate } from \"@uipath/solutionpackager-tool-core\";\nimport {\n ConsoleTelemetryProvider,\n type ITelemetryService,\n NodeContextStorage,\n type TelemetryContext,\n TelemetryService,\n} from \"@uipath/telemetry/node\";\nimport type { PackagerConfig } from \"./models/packager-config.js\";\nimport { setGlobalLogHandler } from \"./services/tool-logger.js\";\n\n/**\n * Base factory class containing common functionality for Node.js packager factories.\n */\nexport abstract class BaseNodePackagerFactory {\n /**\n * Returns the provided file system or creates a default NodeFileSystem.\n * @param config - Configuration options containing optional file system\n * @returns IFileSystem instance\n */\n protected getOrCreateFileSystem(config?: PackagerConfig): IFileSystem {\n return config?.fileSystem ?? new NodeFileSystem();\n }\n\n /**\n * Returns the provided telemetry service or creates a default one.\n * @param config - Configuration options containing optional telemetry service\n * @returns ITelemetryService instance\n */\n protected getOrCreateTelemetryService(\n config?: PackagerConfig,\n ): ITelemetryService {\n if (config?.telemetryService) {\n return config.telemetryService;\n }\n const provider = new ConsoleTelemetryProvider();\n const contextStorage = new NodeContextStorage<TelemetryContext>();\n return new TelemetryService(provider, contextStorage);\n }\n\n /**\n * Checks dotnet CLI availability and logs appropriate messages.\n * @param logger - Logger instance to use for logging\n */\n protected checkDotnetAvailability(logger: IToolLogger): void {\n logger.info(\"Checking for dotnet CLI availability...\");\n try {\n execSync(\"dotnet --version\", {\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n });\n logger.info(\"dotnet CLI is available.\");\n } catch {\n logger.error(\n \"dotnet CLI is not available. Workflow compiler functionality and package signing will not be available.\",\n );\n }\n }\n\n /**\n * Configures the global log handler if provided in config.\n * @param config - Configuration options containing optional log handler\n */\n protected configureLogHandler(config?: PackagerConfig): void {\n if (config?.logHandler) {\n setGlobalLogHandler(config.logHandler);\n }\n }\n\n /**\n * Configures the translation locale.\n * @param config - Configuration options containing optional language\n */\n protected configureLanguage(config?: PackagerConfig): void {\n const language = config?.language ?? \"en\";\n translate.setLocale(language);\n }\n}\n","import type { ConnectionInfo as ToolCoreConnectionInfo } from \"@uipath/solutionpackager-tool-core\";\nimport {\n LogLevel,\n type TargetFramework,\n} from \"@uipath/solutionpackager-tool-core\";\n\n// Re-export ConnectionInfo from tool.core for consistency\nexport type ConnectionInfo = ToolCoreConnectionInfo;\n\n/**\n * Rules configuration file type enum\n */\nexport enum RulesConfigFileType {\n Default = \"Default\",\n AutomationOps = \"AutomationOps\",\n Studio = \"Studio\",\n}\n\n/**\n * Validate options\n */\nexport interface ValidateOptions {\n /**\n * Whether to skip analysis\n */\n skipAnalyze: boolean;\n\n /**\n * Default severity level\n */\n defaultSeverity?: string;\n\n /**\n * Path to governance/policy file\n */\n governanceFilePath?: string;\n\n /**\n * Type of governance file\n */\n governanceFileType: RulesConfigFileType;\n}\n\n/**\n * Pack options\n */\nexport interface PackOptions {\n /**\n * Whether to skip dependency optimization\n */\n skipDependencyOptimization: boolean;\n\n /**\n * Whether to include sources\n */\n includeSources: boolean;\n\n /**\n * Whether to split packages\n */\n splitPackages: boolean;\n}\n\n/**\n * Publish information\n */\nexport interface PublishInfo {\n /**\n * publish request id.\n */\n id: string;\n}\n\n/**\n * Package signing information\n */\nexport interface PackageSigningInfo {\n /**\n * Path to the certificate file\n */\n certificatePath?: string;\n\n /**\n * Certificate password\n */\n certificatePassword?: string;\n\n /**\n * Timestamp server URL\n */\n timestampServer?: string;\n}\n\n/**\n * Base parameters for the packager tool\n */\nexport abstract class PackagerParameters {\n /**\n * Input path to the solution or project folder\n */\n inputPath!: string;\n\n /**\n * Log level for the packager\n */\n logLevel: LogLevel = LogLevel.Warn;\n\n /**\n * Output path for generated artifacts.\n * If not provided, a temporary path will be used.\n */\n outputPath?: string;\n\n /**\n * Target framework for the package\n */\n targetFramework?: TargetFramework;\n\n /**\n * Whether to exclude configured sources\n */\n excludeConfiguredSources: boolean = false;\n\n /**\n * Path to NuGet sources configuration file\n */\n nuGetSourcesConfigPath?: string;\n\n /**\n * Path to detailed log file\n */\n detailedLogPath?: string;\n\n /**\n * Connection information\n */\n connection?: ConnectionInfo;\n}\n","import { PackagerParameters } from \"./packager-parameters.js\";\n\n/**\n * Project-specific parameters for restore operations\n */\nexport class ProjectRestoreOptions extends PackagerParameters {}\n","import {\n RulesConfigFileType,\n type ValidateOptions,\n} from \"./packager-parameters.js\";\nimport { ProjectRestoreOptions } from \"./project-restore-options.js\";\n\n/**\n * Project-specific parameters for validate/analyze operations\n */\nexport class ProjectValidateOptions extends ProjectRestoreOptions {\n /**\n * Validate options\n */\n validateOptions: ValidateOptions = {\n skipAnalyze: false,\n governanceFileType: RulesConfigFileType.Default,\n };\n}\n","import { ProjectValidateOptions } from \"./project-validate-options.js\";\n\n/**\n * Project-specific parameters for build operations\n */\nexport class ProjectBuildOptions extends ProjectValidateOptions {}\n","import type { NugetPackageInfo } from \"@uipath/solutionpackager-tool-core\";\nimport type { PackageSigningInfo, PackOptions } from \"./packager-parameters.js\";\nimport { ProjectBuildOptions } from \"./project-build-options.js\";\n\n/**\n * Project-specific parameters extending build options with pack-specific settings\n */\nexport class ProjectPackOptions extends ProjectBuildOptions {\n destinationPath!: string;\n\n /**\n * NuGet package information\n */\n package!: NugetPackageInfo;\n\n /**\n * Package signing information\n */\n signingInfo?: PackageSigningInfo;\n\n /**\n * Pack options\n */\n packOptions?: PackOptions;\n}\n","import { execSync, spawn } from \"node:child_process\";\nimport type { IToolLogger } from \"@uipath/solutionpackager-tool-core\";\nimport {\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\n\n/**\n * Provides package signing operations with availability checks.\n */\nexport interface IPackageSignService {\n /**\n * Sign a NuGet package using dotnet nuget sign.\n * @param packagePath - Path to the .nupkg file to sign\n * @param certificatePath - Path to the PFX certificate file\n * @param certificatePassword - Optional password for the certificate\n * @param timestampServer - Optional RFC 3161 timestamp server URL\n * @returns ToolResult indicating success or failure\n */\n signPackageAsync(\n packagePath: string,\n certificatePath: string,\n certificatePassword?: string,\n timestampServer?: string,\n ): Promise<ToolResult>;\n}\n\nexport class NodePackageSignService implements IPackageSignService {\n constructor(private readonly logger: IToolLogger) {}\n\n async signPackageAsync(\n packagePath: string,\n certificatePath: string,\n certificatePassword?: string,\n timestampServer?: string,\n ): Promise<ToolResult> {\n if (!this.checkAvailable()) {\n this.logger.error(\n translate.t(\"solutionpackager.signing.info.dotnetNotAvailable\"),\n );\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n translate.t(\n \"solutionpackager.signing.errors.dotnetNotAvailable\",\n ),\n );\n }\n\n const args = [\n \"nuget\",\n \"sign\",\n packagePath,\n \"--certificate-path\",\n certificatePath,\n \"--overwrite\",\n ];\n\n if (certificatePassword) {\n args.push(\"--certificate-password\", certificatePassword);\n }\n\n if (timestampServer) {\n args.push(\"--timestamper\", timestampServer);\n }\n\n return new Promise<ToolResult>((resolve) => {\n const childProcess = spawn(\"dotnet\", args, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n shell: false,\n windowsHide: true,\n });\n\n let stderr = \"\";\n\n childProcess.stdout?.on(\"data\", (data: Buffer) => {\n this.logger.info(data.toString().trim());\n });\n\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n stderr += data.toString();\n });\n\n childProcess.on(\"error\", (error: Error) => {\n this.logger.error(\n `Failed to start dotnet process: ${error.message}`,\n );\n resolve(\n ToolResult.error(\n ToolErrorCodes.InternalError,\n `Failed to start dotnet process: ${error.message}`,\n ),\n );\n });\n\n childProcess.on(\"exit\", (code: number | null) => {\n if (code === 0) {\n this.logger.info(\n `Successfully signed package: ${packagePath}`,\n );\n resolve(ToolResult.success());\n } else {\n const errorMessage =\n stderr.trim() ||\n `dotnet nuget sign exited with code ${code}`;\n this.logger.error(\n `Package signing failed: ${errorMessage}`,\n );\n resolve(\n ToolResult.error(\n ToolErrorCodes.InternalError,\n `Package signing failed: ${errorMessage}`,\n ),\n );\n }\n });\n });\n }\n\n private checkAvailable(): boolean {\n try {\n const output = execSync(\"dotnet nuget --version\", {\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n encoding: \"utf-8\",\n });\n this.logger.info(`dotnet CLI found, version ${output.trim()}`);\n return true;\n } catch {\n return false;\n }\n }\n}\n","export enum TelemetryNames {\n ProjectToolPack = \"ProjectPackager.Tool.Pack\",\n ProjectToolRestore = \"ProjectPackager.Tool.Restore\",\n ProjectToolValidate = \"ProjectPackager.Tool.Validate\",\n ProjectToolBuild = \"ProjectPackager.Tool.Build\",\n ProjectPackagerPack = \"ProjectPackager.Pack\",\n ProjectPackagerRestore = \"ProjectPackager.Restore\",\n ProjectPackagerValidate = \"ProjectPackager.Validate\",\n ProjectPackagerBuild = \"ProjectPackager.Build\",\n ProjectPackagerProjectLoaded = \"ProjectPackager.ProjectLoaded\",\n}\n","/**\n * Interface for NuGet package operations\n */\nexport interface IPackService {\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string;\n}\n\n/**\n * Service for NuGet package operations\n */\nexport class PackService implements IPackService {\n // Matches non-word characters except dots and dashes (equivalent to C# [\\W-[.-]])\n private readonly disallowedCharsRegex = /[^\\w.-]/g;\n private readonly spacesDotRegex = /[\\s.]+/g;\n // Matches zero or more dots, followed by dash or colon, followed by zero or more dots (equivalent to C# \\.*[-:]\\..*)\n private readonly dotDashRegex = /\\.*[-:]\\.*/g;\n private readonly MaxPackageIdLength = 100;\n\n /**\n * Sanitize a package ID to conform to NuGet standards\n * @param packageId - The package ID to sanitize\n * @returns The sanitized package ID\n */\n sanitizePackageId(packageId: string): string {\n packageId = packageId.trim();\n packageId = packageId.replace(this.spacesDotRegex, \".\");\n packageId = packageId.replace(this.dotDashRegex, \"-\");\n packageId = packageId.replace(this.disallowedCharsRegex, \"_\");\n\n if (packageId.length > this.MaxPackageIdLength) {\n throw new Error(\n `Package id ${packageId} exceeds the characters limit of ${this.MaxPackageIdLength}`,\n );\n }\n\n return packageId;\n }\n}\n","import {\n type IFileSystem,\n type IToolLogger,\n ToolErrorCodes,\n ToolResult,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport {\n type PackagerParameters,\n RulesConfigFileType,\n type ValidateOptions,\n} from \"../models/packager-parameters.js\";\n\n/**\n * Interface for a pack options validator\n */\nexport interface IPackagerParametersValidator<\n TOptions extends PackagerParameters,\n> {\n /**\n * Validate pack options\n * @param options Pack options to validate\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating validation success or failure\n */\n validateAsync(\n options: TOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\n/**\n * Base validator for packager parameters.\n * Contains common validation logic shared by solution and project validators.\n */\nexport class PackagerParametersValidator<TOptions extends PackagerParameters>\n implements IPackagerParametersValidator<TOptions>\n{\n constructor(\n protected readonly logger: IToolLogger,\n protected readonly fileSystem: IFileSystem,\n ) {}\n\n async validateAsync(\n _options: TOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return ToolResult.success();\n }\n\n protected validateDestinationPath(destinationPath: string): ToolResult {\n if (!destinationPath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.destinationNotDefined\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n return ToolResult.success();\n }\n\n protected async validateGovernanceOptions(\n validateOptions: ValidateOptions,\n ): Promise<ToolResult> {\n if (\n validateOptions.governanceFileType === RulesConfigFileType.Default\n ) {\n if (validateOptions.governanceFilePath) {\n this.logger.warn(\n `Governance file path '${validateOptions.governanceFilePath}' will be ignored when governance file type is Default`,\n );\n }\n return ToolResult.success();\n }\n\n if (!validateOptions.governanceFilePath) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceRequired\",\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n\n try {\n const stat = await this.fileSystem.stat(\n validateOptions.governanceFilePath,\n );\n if (!stat) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceFileInfo\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n if (stat.isDirectory()) {\n const error = translate.t(\n \"solutionpackager.validator.errors.governanceInvalidFile\",\n {\n path: validateOptions.governanceFilePath,\n },\n );\n this.logger.error(error);\n return ToolResult.error(ToolErrorCodes.InternalError, error);\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorLog = `Governance file not found or inaccessible: ${validateOptions.governanceFilePath}. Error: ${errorMessage}`;\n this.logger.error(errorLog);\n return ToolResult.error(ToolErrorCodes.InternalError, errorLog);\n }\n\n this.logger.info(\n `Using Studio governance file: ${validateOptions.governanceFilePath}`,\n );\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project build options validator\n */\nexport type IProjectBuildOptionsValidator =\n IPackagerParametersValidator<ProjectBuildOptions>;\n\n/**\n * Validator for project build options.\n * Validates governance options required for build operations.\n */\nexport class ProjectBuildOptionsValidator\n extends PackagerParametersValidator<ProjectBuildOptions>\n implements IProjectBuildOptionsValidator\n{\n async validateAsync(\n options: ProjectBuildOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import {\n type IFileSystem,\n Path,\n type ProjectType,\n ProjectTypes,\n translate,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject, UiProject } from \"../models/project-models.js\";\n\n/**\n * Interface for loading project information from the file system\n */\nexport interface IProjectLoader {\n /**\n * Load project information from a directory path.\n * Searches for project.uiproj first, falls back to webAppManifest.json.\n * @param projectPath Path to the project directory\n * @returns Loaded project information\n * @throws Error if neither project.uiproj nor webAppManifest.json is found\n */\n loadProject(projectPath: string): Promise<LoadedUiProject>;\n}\n\nexport class ProjectLoader implements IProjectLoader {\n static readonly ProjectFileName = \"project.uiproj\";\n static readonly WebAppManifestFileName = \"webAppManifest.json\";\n\n constructor(private readonly fileSystem: IFileSystem) {}\n\n async loadProject(projectPath: string): Promise<LoadedUiProject> {\n if (!projectPath) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.pathRequired\",\n ),\n );\n }\n\n // Try project.uiproj first\n const projectFilePath = Path.join(\n projectPath,\n ProjectLoader.ProjectFileName,\n );\n const projectFileExists = await this.fileSystem.exists(projectFilePath);\n\n if (projectFileExists) {\n return await this.loadFromProjectFile(projectPath, projectFilePath);\n }\n\n // Fall back to webAppManifest.json\n const webAppManifestPath = Path.join(\n projectPath,\n ProjectLoader.WebAppManifestFileName,\n );\n const webAppManifestExists =\n await this.fileSystem.exists(webAppManifestPath);\n\n if (webAppManifestExists) {\n return this.loadFromWebAppManifest(projectPath, webAppManifestPath);\n }\n\n throw new Error(\n translate.t(\"solutionpackager.projectLoader.errors.noProjectFile\", {\n projectFile: ProjectLoader.ProjectFileName,\n manifestFile: ProjectLoader.WebAppManifestFileName,\n path: projectPath,\n }),\n );\n }\n\n private async loadFromProjectFile(\n projectPath: string,\n projectFilePath: string,\n ): Promise<LoadedUiProject> {\n const fileContent = await this.fileSystem.readFile(projectFilePath);\n if (!fileContent) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.readFailed\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n const json =\n typeof fileContent === \"string\"\n ? fileContent\n : new TextDecoder(\"utf-8\").decode(fileContent);\n\n const projectData = JSON.parse(json) as UiProject;\n\n const projectType = projectData?.ProjectType || projectData?.type;\n if (!projectData || !projectType) {\n throw new Error(\n translate.t(\n \"solutionpackager.projectLoader.errors.invalidProject\",\n {\n path: projectFilePath,\n },\n ),\n );\n }\n\n return {\n type: projectType as ProjectType,\n name: projectData.Name || Path.basename(projectPath),\n projectPath,\n projectFilePath,\n };\n }\n\n private loadFromWebAppManifest(\n projectPath: string,\n webAppManifestPath: string,\n ): LoadedUiProject {\n // webAppManifest.json presence indicates an AppV2 project\n const folderName = Path.basename(projectPath);\n\n return {\n type: ProjectTypes.AppV2,\n name: folderName,\n projectPath,\n projectFilePath: webAppManifestPath,\n };\n }\n}\n","import type {\n IFileSystem,\n IProjectPackOptions,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { LoadedUiProject } from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackService } from \"./pack-service.js\";\n\n/**\n * Interface for building project pack options\n */\nexport interface IProjectPackOptionsBuilder {\n /**\n * Build project pack options from project parameters and loaded project info\n */\n buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions>;\n}\n\nexport class ProjectPackOptionsBuilder implements IProjectPackOptionsBuilder {\n constructor(\n private readonly packService: IPackService,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async buildProjectPackOptions(\n parameters: ProjectPackOptions,\n project: LoadedUiProject,\n ): Promise<IProjectPackOptions> {\n if (!parameters.outputPath) {\n throw new Error(\"Output path is required for Pack command\");\n }\n\n await this.fileSystem.mkdir(parameters.outputPath);\n\n // Use project name if package id is not set or is empty\n const packageId =\n !parameters.package.id || parameters.package.id.trim() === \"\"\n ? project.name\n : parameters.package.id;\n\n const packageInfo = {\n ...parameters.package,\n id: this.packService.sanitizePackageId(packageId),\n };\n\n return {\n projectPath: project.projectPath,\n excludeConfiguredSources:\n parameters.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: parameters.nuGetSourcesConfigPath,\n logLevel: parameters.logLevel,\n skipAnalyze: parameters.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: parameters.detailedLogPath,\n policyFilePath: parameters.validateOptions.governanceFilePath,\n policyFileType: parameters.validateOptions.governanceFileType,\n outputPath: parameters.outputPath,\n outputType: undefined,\n projectType: project.type,\n package: packageInfo,\n skipDependencyOptimization:\n parameters.packOptions?.skipDependencyOptimization ?? false,\n includeSources: parameters.packOptions?.includeSources ?? false,\n splitPackages: parameters.packOptions?.splitPackages ?? false,\n };\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { IPackagerParametersValidator } from \"./packager-parameters-validator.js\";\nimport { ProjectBuildOptionsValidator } from \"./project-build-options-validator.js\";\n\n/**\n * Interface for the project pack options validator\n */\nexport type IProjectPackOptionsValidator =\n IPackagerParametersValidator<ProjectPackOptions>;\n\n/**\n * Validator for project pack options.\n * Validates destination path and governance options required for pack operations.\n */\nexport class ProjectPackOptionsValidator\n extends ProjectBuildOptionsValidator\n implements IProjectPackOptionsValidator\n{\n async validateAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const destinationResult = this.validateDestinationPath(\n options.destinationPath,\n );\n if (!destinationResult.isSuccess) {\n return destinationResult;\n }\n\n return await super.validateAsync(options, cancellationToken);\n }\n}\n","import {\n type IProjectBuildOptions,\n type IProjectPackOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type ProjectOperationContext,\n type ProjectTool,\n ToolErrorCodes,\n ToolResult,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackageSigningInfo } from \"../models/packager-parameters.js\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport type { IToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Interface for executing project tool operations\n */\nexport interface IProjectToolExecutor {\n restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n}\n\nexport class ProjectToolExecutor implements IProjectToolExecutor {\n constructor(\n private readonly toolsFactory: IToolsFactory,\n private readonly telemetry: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {}\n\n async restoreAsync(\n options: IProjectRestoreOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolRestore,\n project.Type,\n async () => tool.restoreAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async validateAsync(\n options: IProjectValidateOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolValidate,\n project.Type,\n async () => tool.validateAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async buildAsync(\n options: IProjectBuildOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(project, context, (tool) =>\n this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolBuild,\n project.Type,\n async () => tool.buildAsync(options, cancellationToken),\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n ),\n );\n }\n\n async packAsync(\n options: IProjectPackOptions,\n project: UiPathProject,\n context?: ProjectOperationContext,\n signingInfo?: PackageSigningInfo,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeToolOperationAsync(\n project,\n context,\n async (tool) => {\n const result =\n await this.telemetry.trackDependencyOperation<ToolResult>(\n TelemetryNames.ProjectToolPack,\n project.Type,\n async () => {\n return await tool.packAsync(\n options,\n cancellationToken,\n );\n },\n {\n projectId: project.Id,\n projectType: project.Type,\n },\n );\n\n // If pack was successful and signing info with certificate path is provided, sign all packages\n if (\n result.isSuccess &&\n signingInfo?.certificatePath &&\n result.packages.length > 0\n ) {\n const signResult = await this.signPackagesAsync(\n result.packages,\n signingInfo,\n );\n if (!signResult.isSuccess) {\n return signResult;\n }\n }\n\n return result;\n },\n );\n }\n\n /**\n * Execute an operation on a project tool with proper creation and disposal.\n */\n private async executeToolOperationAsync(\n project: UiPathProject,\n context: ProjectOperationContext | undefined,\n operation: (tool: ProjectTool) => Promise<ToolResult>,\n ): Promise<ToolResult> {\n try {\n const tool = await this.toolsFactory.createProjectToolAsync(\n project,\n context,\n );\n\n try {\n return await operation(tool);\n } finally {\n const disposeResult = tool.dispose();\n if (disposeResult instanceof Promise) {\n await disposeResult;\n }\n }\n } catch (error) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n /**\n * Sign all packages using the package sign service.\n * @param packages - Array of package paths to sign\n * @param signingInfo - Signing configuration\n * @returns ToolResult indicating success or failure\n */\n private async signPackagesAsync(\n packages: string[],\n signingInfo: PackageSigningInfo,\n ): Promise<ToolResult> {\n // Check if package signing service is available\n if (!this.packageSignService) {\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n \"Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.\",\n );\n }\n\n const certificatePath = signingInfo.certificatePath as string;\n\n // Sign all packages in parallel\n const signResults = await Promise.all(\n packages.map((packagePath) =>\n this.packageSignService?.signPackageAsync(\n packagePath,\n certificatePath,\n signingInfo.certificatePassword,\n signingInfo.timestampServer,\n ),\n ),\n );\n\n // Check if any signing failed\n const failedResult = signResults.find(\n (result) => result && !result.isSuccess,\n );\n if (failedResult) {\n return failedResult;\n }\n\n return ToolResult.success();\n }\n}\n","import type { ToolResult } from \"@uipath/solutionpackager-tool-core\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport {\n type IPackagerParametersValidator,\n PackagerParametersValidator,\n} from \"./packager-parameters-validator.js\";\n\n/**\n * Interface for the project validate options validator\n */\nexport type IProjectValidateOptionsValidator =\n IPackagerParametersValidator<ProjectValidateOptions>;\n\n/**\n * Validator for project validate options.\n * Validates governance options required for validate/analyze operations.\n */\nexport class ProjectValidateOptionsValidator\n extends PackagerParametersValidator<ProjectValidateOptions>\n implements IProjectValidateOptionsValidator\n{\n async validateAsync(\n options: ProjectValidateOptions,\n _cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.validateGovernanceOptions(options.validateOptions);\n }\n}\n","import type {\n IFileSystem,\n IToolsFactoryRepository,\n ProjectOperationContext,\n ProjectTool,\n SolutionTool,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { UiPathProject } from \"../models/project-models.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\n\n/**\n * Factory interface for creating solution and project tools\n */\nexport interface IToolsFactory {\n /**\n * Create a solution tool for the specified solution\n * @throws Error if no factory is registered\n */\n createSolutionToolAsync(solutionName: string): Promise<SolutionTool>;\n\n /**\n * Create a project tool for the specified project\n * @param project - The project to create a tool for\n * @param context - Optional operation context with id and sibling project info\n * @throws Error if no factory is found for the project type\n */\n createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool>;\n}\n\n/**\n * Factory for creating solution and project tools\n */\nexport class ToolsFactory implements IToolsFactory {\n constructor(\n private readonly repository: IToolsFactoryRepository,\n private readonly fileSystem: IFileSystem,\n ) {}\n\n async createSolutionToolAsync(solutionName: string): Promise<SolutionTool> {\n const logger = new ToolLogger(\"ResourceBuilder\", solutionName);\n const factory = this.repository.getSolutionToolFactory();\n return await factory.createAsync(logger, this.fileSystem);\n }\n\n async createProjectToolAsync(\n project: UiPathProject,\n context?: ProjectOperationContext,\n ): Promise<ProjectTool> {\n const sourceTarget = getSourceTarget();\n const logger = new ToolLogger(project.Type, sourceTarget);\n\n if (!project.ProjectPath) {\n throw new Error(`Project path not set for project: ${project.Id}`);\n }\n\n const factory = this.repository.getProjectToolFactory(project.Type);\n return await factory.createAsync(logger, this.fileSystem, context);\n\n function getSourceTarget(): string {\n // Split by both forward slash and backslash, get first token (folder name)\n const segments = project.ProjectRelativePath.split(/[/\\\\]/);\n if (segments.length > 1) {\n return segments[0];\n }\n // Standalone project-packager: no folder prefix, use project name\n return project.Id;\n }\n }\n}\n","import {\n toolsFactoryRepository as defaultToolsFactoryRepository,\n type IFileSystem,\n type IProjectBuildOptions,\n type IProjectRestoreOptions,\n type IProjectValidateOptions,\n type IToolsFactoryRepository,\n type NugetPackageInfo,\n NugetPackager,\n Path,\n TemporaryStorageService,\n ToolErrorCodes,\n ToolResult,\n translate,\n ZipService,\n} from \"@uipath/solutionpackager-tool-core\";\nimport type { ITelemetryService } from \"@uipath/telemetry\";\nimport type { PackagerParameters } from \"../models/packager-parameters.js\";\nimport type { ProjectBuildOptions } from \"../models/project-build-options.js\";\nimport type {\n LoadedUiProject,\n UiPathProject,\n} from \"../models/project-models.js\";\nimport type { ProjectPackOptions } from \"../models/project-pack-options.js\";\nimport type { ProjectRestoreOptions } from \"../models/project-restore-options.js\";\nimport type { ProjectValidateOptions } from \"../models/project-validate-options.js\";\nimport { TelemetryNames } from \"../telemetry-names.js\";\nimport { PackService } from \"./pack-service.js\";\nimport type { IPackageSignService } from \"./package-sign-service.js\";\nimport {\n type IProjectBuildOptionsValidator,\n ProjectBuildOptionsValidator,\n} from \"./project-build-options-validator.js\";\nimport { type IProjectLoader, ProjectLoader } from \"./project-loader.js\";\nimport {\n type IProjectPackOptionsBuilder,\n ProjectPackOptionsBuilder,\n} from \"./project-pack-options-builder.js\";\nimport {\n type IProjectPackOptionsValidator,\n ProjectPackOptionsValidator,\n} from \"./project-pack-options-validator.js\";\nimport {\n type IProjectToolExecutor,\n ProjectToolExecutor,\n} from \"./project-tool-executor.js\";\nimport {\n type IProjectValidateOptionsValidator,\n ProjectValidateOptionsValidator,\n} from \"./project-validate-options-validator.js\";\nimport { ToolLogger } from \"./tool-logger.js\";\nimport { type IToolsFactory, ToolsFactory } from \"./tools-factory.js\";\n\n/**\n * Package stream containing package data\n */\nexport interface PackageStream {\n /** Name of the package file */\n name: string;\n /** Package file data */\n data: Uint8Array;\n}\n\n/**\n * Interface for the ProjectPackager component.\n * Provides methods to setup and pack individual UiPath projects.\n */\nexport interface IProjectPackager {\n /**\n * File system instance\n */\n readonly fileSystem: IFileSystem;\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n canPackProjectAsync(projectPath: string): Promise<boolean>;\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string>;\n\n /**\n * Restore project dependencies.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Analyze (validate) a project.\n * @param options Project options containing input path and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Build a project.\n * @param options Project options containing input path, output path, and configuration\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult indicating success or failure\n */\n buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult>;\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]>;\n}\n\nexport class ProjectPackager implements IProjectPackager {\n private readonly repository: IToolsFactoryRepository;\n private readonly temporaryStorage: TemporaryStorageService;\n private readonly zipService: ZipService;\n private readonly logger: ToolLogger;\n private readonly optionsBuilder: IProjectPackOptionsBuilder;\n private readonly toolsFactory: IToolsFactory;\n private readonly projectExecutor: IProjectToolExecutor;\n private readonly projectLoader: IProjectLoader;\n private readonly validateOptionsValidator: IProjectValidateOptionsValidator;\n private readonly buildOptionsValidator: IProjectBuildOptionsValidator;\n private readonly packOptionsValidator: IProjectPackOptionsValidator;\n private readonly nugetPackager: NugetPackager;\n\n constructor(\n public readonly fileSystem: IFileSystem,\n private readonly telemetryService: ITelemetryService,\n private readonly packageSignService?: IPackageSignService,\n ) {\n this.repository = defaultToolsFactoryRepository;\n this.temporaryStorage = new TemporaryStorageService(this.fileSystem);\n this.zipService = new ZipService(this.fileSystem);\n this.nugetPackager = new NugetPackager(this.fileSystem);\n this.logger = new ToolLogger(\"ProjectPackager\", \"PackProject\");\n this.validateOptionsValidator = new ProjectValidateOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.buildOptionsValidator = new ProjectBuildOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n this.packOptionsValidator = new ProjectPackOptionsValidator(\n this.logger,\n this.fileSystem,\n );\n\n const packService = new PackService();\n this.optionsBuilder = new ProjectPackOptionsBuilder(\n packService,\n this.fileSystem,\n );\n\n this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);\n this.projectExecutor = new ProjectToolExecutor(\n this.toolsFactory,\n this.telemetryService,\n this.packageSignService,\n );\n this.projectLoader = new ProjectLoader(this.fileSystem);\n }\n\n /**\n * Check if the project can be packed by verifying the project type has a registered tool.\n * @param projectPath Path to the project folder\n * @returns True if the project type has a registered tool factory\n */\n async canPackProjectAsync(projectPath: string): Promise<boolean> {\n const project = await this.projectLoader.loadProject(projectPath);\n return this.repository.canHandleProject(project.type);\n }\n\n /**\n * Setup the temporary storage.\n * @param input The project folder as a zip Uint8Array (extracts to temp folder) or a path string (uses as-is)\n * @param operationId Optional operation ID for telemetry correlation\n * @returns The path to the project folder\n */\n async setupAsync(\n input: Uint8Array | string,\n operationId?: string,\n ): Promise<string> {\n this.telemetryService.setOperationId(operationId);\n\n await this.temporaryStorage.cleanup();\n\n if (typeof input === \"string\") {\n return input;\n }\n\n const inputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\"input\");\n await this.zipService.extractAsync(input, inputPath);\n\n // Check if the extracted content is inside a single root folder\n const entries = await this.fileSystem.readdir(inputPath);\n if (entries.length === 1) {\n const innerPath = Path.join(inputPath, entries[0]);\n const stat = await this.fileSystem.stat(innerPath);\n if (stat?.isDirectory()) {\n return innerPath;\n }\n }\n\n return inputPath;\n }\n\n /**\n * Restore project dependencies.\n */\n async restoreProjectAsync(\n options: ProjectRestoreOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.executeProjectOperationAsync(\n options,\n \"Restore\",\n TelemetryNames.ProjectPackagerRestore,\n async (uiPathProject, loadedProject) => {\n const restoreOptions: IProjectRestoreOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n outputPath: options.outputPath,\n };\n return await this.projectExecutor.restoreAsync(\n restoreOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Validate a project.\n */\n async validateProjectAsync(\n options: ProjectValidateOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult =\n await this.validateOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Validate\",\n TelemetryNames.ProjectPackagerValidate,\n async (uiPathProject, loadedProject) => {\n const validateOptions: IProjectValidateOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n defaultSeverity: options.validateOptions.defaultSeverity,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n };\n return await this.projectExecutor.validateAsync(\n validateOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Build a project.\n */\n async buildProjectAsync(\n options: ProjectBuildOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n const validationResult = await this.buildOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n if (!validationResult.isSuccess) {\n return validationResult;\n }\n\n return await this.executeProjectOperationAsync(\n options,\n \"Build\",\n TelemetryNames.ProjectPackagerBuild,\n async (uiPathProject, loadedProject) => {\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n const buildOptions: IProjectBuildOptions = {\n projectPath: loadedProject.projectPath,\n excludeConfiguredSources:\n options.excludeConfiguredSources ?? false,\n nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,\n logLevel: options.logLevel,\n skipAnalyze: options.validateOptions.skipAnalyze,\n skipValidate: false,\n detailedLogPath: options.detailedLogPath,\n policyFilePath: options.validateOptions.governanceFilePath,\n policyFileType: options.validateOptions.governanceFileType,\n outputPath: options.outputPath,\n outputType: undefined,\n projectType: uiPathProject.Type,\n };\n return await this.projectExecutor.buildAsync(\n buildOptions,\n uiPathProject,\n undefined,\n cancellationToken,\n );\n },\n cancellationToken,\n );\n }\n\n /**\n * Pack a project using the provided options.\n * @param options Project pack options containing all parameters\n * @param cancellationToken Optional cancellation token\n * @returns ToolResult with the paths to the created packages\n */\n async packProjectAsync(\n options: ProjectPackOptions,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n TelemetryNames.ProjectPackagerPack,\n async () => {\n try {\n let result = await this.packOptionsValidator.validateAsync(\n options,\n cancellationToken,\n );\n\n if (!result.isSuccess) {\n return result;\n }\n\n // Set default outputPath if not provided\n if (!options.outputPath) {\n options.outputPath =\n await this.temporaryStorage.getTempSubfolderPathAsync(\n \"output\",\n );\n }\n\n // Load project information\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n this.telemetryService.trackEvent(\n TelemetryNames.ProjectPackagerProjectLoaded,\n { projectId: loadedProject.name },\n );\n\n // Build project pack options\n const projectPackOptions =\n await this.optionsBuilder.buildProjectPackOptions(\n options,\n loadedProject,\n );\n\n // Create a UiPathProject from loaded project for the executor\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n // Execute the pack operation\n result = await this.projectExecutor.packAsync(\n projectPackOptions,\n uiPathProject,\n undefined,\n options.signingInfo,\n cancellationToken,\n );\n\n // Copy packages to destination path if successful\n if (result.isSuccess && result.packages.length > 0) {\n const destinationPackages =\n await this.copyPackagesToDestination(\n result.packages,\n options.destinationPath,\n projectPackOptions.package,\n );\n result = new ToolResult(\n ToolErrorCodes.Success,\n undefined,\n destinationPackages,\n );\n }\n\n // Log the result\n if (result.isSuccess) {\n this.logger.info(\n `Project pack completed successfully. Packages: ${result.packages.join(\", \")}`,\n );\n } else {\n this.logger.error(\n `Project pack failed with error code ${result.errorCode}: ${result.message}`,\n );\n }\n\n return result;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project pack failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Convert a successful ToolResult to a list of package streams.\n * @param result The ToolResult to convert\n * @returns A promise that resolves to an array of PackageStream objects\n * @throws Error if the result is not successful or if any package file cannot be read\n */\n async getPackageStreamsAsync(result: ToolResult): Promise<PackageStream[]> {\n if (!result.isSuccess) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToGetStreams\",\n {\n errorCode: result.errorCode,\n message: result.message ?? \"\",\n },\n ),\n );\n }\n\n if (!result.packages || result.packages.length === 0) {\n return [];\n }\n\n const packageStreams: PackageStream[] = [];\n\n for (const packagePath of result.packages) {\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n const name = packagePath.split(/[\\\\/]/).pop() || packagePath;\n\n packageStreams.push({ name, data });\n }\n\n return packageStreams;\n }\n\n /**\n * Common logic for restore, analyze, and build operations:\n * validates options, loads the project, executes the operation, and handles errors.\n */\n private async executeProjectOperationAsync(\n options: PackagerParameters,\n operationName: string,\n telemetryName: TelemetryNames,\n operation: (\n project: UiPathProject,\n loadedProject: LoadedUiProject,\n ) => Promise<ToolResult>,\n cancellationToken?: AbortSignal,\n ): Promise<ToolResult> {\n return await this.telemetryService.trackRequest(\n telemetryName,\n async () => {\n try {\n const loadedProject = await this.projectLoader.loadProject(\n options.inputPath,\n );\n\n const uiPathProject: UiPathProject = {\n Type: loadedProject.type,\n ProjectRelativePath: Path.basename(\n loadedProject.projectFilePath,\n ),\n ProjectPath: loadedProject.projectPath,\n Id: loadedProject.name,\n };\n\n const operationResult = await operation(\n uiPathProject,\n loadedProject,\n );\n\n if (operationResult.isSuccess) {\n this.logger.info(\n `Project ${operationName.toLowerCase()} completed successfully.`,\n );\n } else {\n this.logger.error(\n `Project ${operationName.toLowerCase()} failed with error code ${operationResult.errorCode}: ${operationResult.message}`,\n );\n }\n\n return operationResult;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Processing error: ${errorMessage}`);\n return ToolResult.error(\n ToolErrorCodes.InternalError,\n `Project ${operationName.toLowerCase()} failed: ${errorMessage}`,\n );\n } finally {\n await this.temporaryStorage.cleanup();\n }\n },\n );\n }\n\n /**\n * Copy packages from the output path to the destination path.\n * Handles file paths, directories with .nupkg files, and directories with\n * unpacked NuGet content (e.g., content/, lib/ folders from WorkflowCompiler).\n * @param packagePaths Paths to the package files or directories\n * @param destinationPath Destination directory\n * @param packageInfo NuGet package info for creating .nupkg from unpacked content\n * @returns Paths to the copied package files\n */\n private async copyPackagesToDestination(\n packagePaths: string[],\n destinationPath: string,\n packageInfo: NugetPackageInfo,\n ): Promise<string[]> {\n await this.fileSystem.mkdir(destinationPath);\n\n const destinationPackages: string[] = [];\n\n for (const packagePath of packagePaths) {\n const stat = await this.fileSystem.stat(packagePath);\n\n if (stat?.isDirectory()) {\n // If the path is a directory, find .nupkg files inside it\n const files = await this.fileSystem.readdir(packagePath);\n const nupkgFiles = files.filter((f) => f.endsWith(\".nupkg\"));\n\n if (nupkgFiles.length > 0) {\n // Directory contains .nupkg files - copy them\n for (const nupkgFile of nupkgFiles) {\n const filePath = Path.join(packagePath, nupkgFile);\n const destPath = Path.join(destinationPath, nupkgFile);\n const data = await this.fileSystem.readFile(filePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: filePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n } else {\n // Directory contains unpacked NuGet content (e.g., content/, lib/) -\n // use NugetPackager to create the .nupkg file\n const nupkgFileName = `${packageInfo.id}.${packageInfo.version}.nupkg`;\n const destPath = Path.join(destinationPath, nupkgFileName);\n const packResult = await this.nugetPackager.packAsync(\n packagePath,\n packageInfo,\n destPath,\n );\n destinationPackages.push(packResult.outputPath);\n }\n } else {\n const fileName =\n packagePath.split(/[\\\\/]/).pop() || packagePath;\n const destPath = Path.join(destinationPath, fileName);\n const data = await this.fileSystem.readFile(packagePath);\n\n if (!data) {\n throw new Error(\n translate.t(\n \"solutionpackager.packager.errors.failedToReadPackage\",\n {\n path: packagePath,\n },\n ),\n );\n }\n\n await this.fileSystem.writeFile(destPath, data);\n destinationPackages.push(destPath);\n }\n }\n\n return destinationPackages;\n }\n}\n","import { BaseNodePackagerFactory } from \"./base-node-packager-factory.js\";\nimport type { PackagerConfig } from \"./models/packager-config.js\";\nimport { NodePackageSignService } from \"./services/package-sign-service.js\";\nimport {\n type IProjectPackager,\n ProjectPackager,\n} from \"./services/project-packager.js\";\nimport { ToolLogger } from \"./services/tool-logger.js\";\n\n/**\n * Factory class for creating ProjectPackager instances configured for Node.js usage.\n *\n * Default project tools are automatically registered via side-effect imports:\n * - Project tools: ConnectorTool, WorkflowCompilerTool, ApiWorkflowTool, FlowTool, WebAppTool\n *\n * @example\n * ```typescript\n * const packager = await createNodeProjectPackager({\n * logHandler: (message) => console.log(message)\n * });\n * ```\n */\nclass NodeProjectPackagerFactory extends BaseNodePackagerFactory {\n /**\n * Creates a ProjectPackager instance with all default tools registered.\n * @param config - Optional configuration options for the ProjectPackager\n * @returns Promise<IProjectPackager> - A fully configured ProjectPackager instance ready for use in Node.js.\n */\n async createAsync(config?: PackagerConfig): Promise<IProjectPackager> {\n const logger = new ToolLogger(\"ProjectPackagerFactory\", \"Create\");\n\n this.configureLanguage(config);\n this.configureLogHandler(config);\n\n logger.info(\"Creating ProjectPackager instance...\");\n\n const fileSystem = this.getOrCreateFileSystem(config);\n const telemetryService = this.getOrCreateTelemetryService(config);\n const packageSignService = new NodePackageSignService(logger);\n const projectPackager = new ProjectPackager(\n fileSystem,\n telemetryService,\n packageSignService,\n );\n\n this.checkDotnetAvailability(logger);\n\n logger.info(\"ProjectPackager created successfully.\");\n return projectPackager;\n }\n}\n\n/**\n * Creates a ProjectPackager instance configured for Node.js usage.\n *\n * This is a convenience function that creates a NodeProjectPackagerFactory and calls createAsync.\n *\n * @param options - Configuration options for the ProjectPackager\n * @returns Promise<IProjectPackager> - A fully configured ProjectPackager instance ready for use in Node.js.\n *\n * @example\n * ```typescript\n * // Simple usage with default tools\n * const packager = await createNodeProjectPackager();\n *\n * // With custom log handler\n * const packager = await createNodeProjectPackager({\n * logHandler: (message) => console.log(message)\n * });\n * ```\n */\nexport async function createNodeProjectPackager(\n options?: PackagerConfig,\n): Promise<IProjectPackager> {\n const factory = new NodeProjectPackagerFactory();\n return factory.createAsync(options);\n}\n"],"names":["en","I18nManager","de","es","esMX","fr","ja","ko","pt","ptBR","ro","ru","tr","zhCN","zhTW","zu","globalLogHandler","logMessage","formattedMessage","LogLevel","console","setGlobalLogHandler","handler","ToolLogger","message","options","LogMessage","logLevel","source","sourceTarget","BaseNodePackagerFactory","config","NodeFileSystem","provider","ConsoleTelemetryProvider","contextStorage","NodeContextStorage","TelemetryService","logger","execSync","language","translate","RulesConfigFileType","PackagerParameters","ProjectRestoreOptions","ProjectValidateOptions","ProjectBuildOptions","ProjectPackOptions","NodePackageSignService","packagePath","certificatePath","certificatePassword","timestampServer","ToolResult","ToolErrorCodes","args","Promise","resolve","childProcess","spawn","stderr","data","error","code","errorMessage","output","TelemetryNames","PackService","packageId","Error","PackagerParametersValidator","_options","_cancellationToken","destinationPath","validateOptions","stat","String","errorLog","fileSystem","ProjectBuildOptionsValidator","ProjectLoader","projectPath","projectFilePath","Path","projectFileExists","webAppManifestPath","webAppManifestExists","fileContent","json","TextDecoder","projectData","JSON","projectType","folderName","ProjectTypes","ProjectPackOptionsBuilder","parameters","project","packageInfo","undefined","packService","ProjectPackOptionsValidator","cancellationToken","destinationResult","ProjectToolExecutor","context","tool","signingInfo","result","signResult","operation","disposeResult","packages","signResults","failedResult","toolsFactory","telemetry","packageSignService","ProjectValidateOptionsValidator","ToolsFactory","solutionName","factory","getSourceTarget","segments","repository","ProjectPackager","input","operationId","inputPath","entries","innerPath","uiPathProject","loadedProject","restoreOptions","validationResult","buildOptions","projectPackOptions","destinationPackages","packageStreams","name","operationName","telemetryName","operationResult","packagePaths","files","nupkgFiles","f","nupkgFile","filePath","destPath","nupkgFileName","packResult","fileName","telemetryService","defaultToolsFactoryRepository","TemporaryStorageService","ZipService","NugetPackager","NodeProjectPackagerFactory","projectPackager","createNodeProjectPackager"],"mappings":"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"}
|
package/dist/src/i18n/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/project-packager",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "UiPath Project Packager - core library for packing individual UiPath projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"directory": "packager/uipath-projectpackager"
|
|
22
22
|
},
|
|
23
23
|
"publishConfig": {
|
|
24
|
-
"registry": "https://
|
|
24
|
+
"registry": "https://npm.pkg.github.com/"
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"dist"
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"fflate": "^0.8.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@rslib/core": "^0.
|
|
52
|
-
"@types/node": "^
|
|
51
|
+
"@rslib/core": "^0.18.2",
|
|
52
|
+
"@types/node": "^24.10.1",
|
|
53
53
|
"@uipath/resource-builder-tool": "^2025.11.0-alpha2430-2948",
|
|
54
54
|
"@uipath/tool-agent": "1.0.0",
|
|
55
55
|
"@uipath/tool-apiworkflow": "*",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"@uipath/tool-webapp": "1.0.0",
|
|
59
59
|
"@uipath/tool-workflowcompiler": "*",
|
|
60
60
|
"@vitest/coverage-v8": "^4.0.14",
|
|
61
|
-
"jsdom": "^
|
|
61
|
+
"jsdom": "^28.1.0",
|
|
62
62
|
"typescript": "^5.9.3",
|
|
63
|
-
"vite-tsconfig-paths": "^
|
|
63
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
64
64
|
"vitest": "^4.0.14"
|
|
65
65
|
}
|
|
66
66
|
}
|