@uipath/solution-packager 1.196.0 → 1.197.0-preview.65
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 +132 -20
- package/dist/node.js +132 -20
- package/dist/src/browser-solution-packager-factory.d.ts +11 -3
- package/dist/src/services/options-builder.d.ts +6 -1
- package/dist/src/services/solution-pack-service.d.ts +17 -12
- package/dist/src/services/solution-packager.d.ts +15 -0
- package/dist/src/telemetry-names.d.ts +2 -0
- package/dist/tests/solution-packager.e2e.test.d.ts +1 -10
- package/package.json +35 -58
package/dist/index.js
CHANGED
|
@@ -402,8 +402,8 @@ import {
|
|
|
402
402
|
Path as Path4,
|
|
403
403
|
TargetFramework,
|
|
404
404
|
TemporaryStorageService,
|
|
405
|
-
ToolErrorCodes as
|
|
406
|
-
ToolResult as
|
|
405
|
+
ToolErrorCodes as ToolErrorCodes4,
|
|
406
|
+
ToolResult as ToolResult4,
|
|
407
407
|
toolsFactoryRepository,
|
|
408
408
|
translate as translate3,
|
|
409
409
|
ZipService
|
|
@@ -493,6 +493,18 @@ class OptionsBuilder {
|
|
|
493
493
|
policyFileType: solutionOptions.validateOptions.governanceFileType
|
|
494
494
|
};
|
|
495
495
|
}
|
|
496
|
+
async buildProjectRestoreOptions(solutionOptions, project) {
|
|
497
|
+
if (!solutionOptions.outputPath) {
|
|
498
|
+
throw new Error(translate.t("solutionpackager.optionsBuilder.errors.outputPathRequired"));
|
|
499
|
+
}
|
|
500
|
+
return {
|
|
501
|
+
projectPath: this.resolveProjectPath(solutionOptions, project),
|
|
502
|
+
excludeConfiguredSources: solutionOptions.excludeConfiguredSources ?? false,
|
|
503
|
+
nuGetSourcesConfigPath: solutionOptions.nuGetSourcesConfigPath,
|
|
504
|
+
logLevel: solutionOptions.logLevel,
|
|
505
|
+
outputPath: await this.buildProjectOutputPath(solutionOptions.outputPath, project)
|
|
506
|
+
};
|
|
507
|
+
}
|
|
496
508
|
resolveProjectPath(solutionOptions, project) {
|
|
497
509
|
return Path.join(solutionOptions.inputPath, Path.dirname(project.ProjectRelativePath));
|
|
498
510
|
}
|
|
@@ -785,10 +797,24 @@ class SolutionPackOptionsValidator extends PackagerParametersValidator {
|
|
|
785
797
|
}
|
|
786
798
|
|
|
787
799
|
// src/services/solution-pack-service.ts
|
|
800
|
+
import {
|
|
801
|
+
resolveProducedNupkgsAsync,
|
|
802
|
+
signNupkgsAsync
|
|
803
|
+
} from "@uipath/project-packager";
|
|
788
804
|
import {
|
|
789
805
|
ToolErrorCodes,
|
|
790
806
|
ToolResult
|
|
791
807
|
} from "@uipath/solutionpackager-tool-core";
|
|
808
|
+
|
|
809
|
+
// src/services/tool-result-helpers.ts
|
|
810
|
+
function hasFailedResults(results) {
|
|
811
|
+
return results.some((result) => !result.isSuccess);
|
|
812
|
+
}
|
|
813
|
+
function getFailedResultsMessage(results) {
|
|
814
|
+
return results.filter((result) => !result.isSuccess).map((r) => r.message || "Unknown error").join(", ");
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
// src/services/solution-pack-service.ts
|
|
792
818
|
class SolutionPackService {
|
|
793
819
|
optionsBuilder;
|
|
794
820
|
toolsFactory;
|
|
@@ -796,13 +822,15 @@ class SolutionPackService {
|
|
|
796
822
|
zipService;
|
|
797
823
|
fileSystem;
|
|
798
824
|
telemetry;
|
|
799
|
-
|
|
825
|
+
packageSignService;
|
|
826
|
+
constructor(optionsBuilder, toolsFactory, projectExecutor, zipService, fileSystem, telemetry, packageSignService) {
|
|
800
827
|
this.optionsBuilder = optionsBuilder;
|
|
801
828
|
this.toolsFactory = toolsFactory;
|
|
802
829
|
this.projectExecutor = projectExecutor;
|
|
803
830
|
this.zipService = zipService;
|
|
804
831
|
this.fileSystem = fileSystem;
|
|
805
832
|
this.telemetry = telemetry;
|
|
833
|
+
this.packageSignService = packageSignService;
|
|
806
834
|
}
|
|
807
835
|
async packAsync(parameters, solution, context, cancellationToken) {
|
|
808
836
|
const solutionOptions = await this.optionsBuilder.buildSolutionPackOptions(parameters, solution);
|
|
@@ -817,8 +845,8 @@ class SolutionPackService {
|
|
|
817
845
|
restoreResult,
|
|
818
846
|
...projectResults
|
|
819
847
|
];
|
|
820
|
-
if (
|
|
821
|
-
return ToolResult.error(ToolErrorCodes.InternalError, `Solution pack failed: ${
|
|
848
|
+
if (hasFailedResults(restoreAndPackResults)) {
|
|
849
|
+
return ToolResult.error(ToolErrorCodes.InternalError, `Solution pack failed: ${getFailedResultsMessage(restoreAndPackResults)}`);
|
|
822
850
|
}
|
|
823
851
|
const buildResult = await solutionTool.buildAsync(solutionOptions, cancellationToken);
|
|
824
852
|
if (!buildResult.isSuccess) {
|
|
@@ -827,6 +855,10 @@ class SolutionPackService {
|
|
|
827
855
|
if (!solutionOptions.outputPath) {
|
|
828
856
|
return ToolResult.error(ToolErrorCodes.InternalError, "Solution output path is not defined");
|
|
829
857
|
}
|
|
858
|
+
const signResult = await this.signProjectPackagesAsync(projectResults, parameters.signingInfo);
|
|
859
|
+
if (!signResult.isSuccess) {
|
|
860
|
+
return signResult;
|
|
861
|
+
}
|
|
830
862
|
const archivePath = await this.compressSolutionAsync(parameters, solutionOptions.outputPath);
|
|
831
863
|
return new ToolResult(ToolErrorCodes.Success, undefined, [
|
|
832
864
|
archivePath
|
|
@@ -845,18 +877,27 @@ class SolutionPackService {
|
|
|
845
877
|
async packSingleProjectAsync(parameters, project, context, cancellationToken) {
|
|
846
878
|
try {
|
|
847
879
|
const projectOptions = await this.optionsBuilder.buildProjectPackOptions(parameters, project);
|
|
848
|
-
return await this.projectExecutor.packAsync(projectOptions, project, context,
|
|
880
|
+
return await this.projectExecutor.packAsync(projectOptions, project, context, cancellationToken);
|
|
849
881
|
} catch (error) {
|
|
850
882
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
851
883
|
return ToolResult.error(ToolErrorCodes.InternalError, errorMessage);
|
|
852
884
|
}
|
|
853
885
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
const
|
|
859
|
-
|
|
886
|
+
async signProjectPackagesAsync(projectResults, signingInfo) {
|
|
887
|
+
if (!signingInfo?.certificatePath) {
|
|
888
|
+
return ToolResult.success();
|
|
889
|
+
}
|
|
890
|
+
const producedPaths = projectResults.flatMap((result) => result.packages);
|
|
891
|
+
const resolved = await Promise.all(producedPaths.map(async (producedPath) => ({
|
|
892
|
+
producedPath,
|
|
893
|
+
nupkgs: await resolveProducedNupkgsAsync(this.fileSystem, producedPath)
|
|
894
|
+
})));
|
|
895
|
+
const unresolved = resolved.filter((entry) => entry.nupkgs.length === 0).map((entry) => entry.producedPath);
|
|
896
|
+
if (unresolved.length > 0) {
|
|
897
|
+
return ToolResult.error(ToolErrorCodes.InternalError, `Package signing was required but no .nupkg was found to sign for: ${unresolved.join(", ")}.`);
|
|
898
|
+
}
|
|
899
|
+
const nupkgsToSign = resolved.flatMap((entry) => entry.nupkgs);
|
|
900
|
+
return signNupkgsAsync(this.packageSignService, nupkgsToSign, signingInfo);
|
|
860
901
|
}
|
|
861
902
|
async compressSolutionAsync(parameters, outputPath) {
|
|
862
903
|
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Compress" /* SolutionCompress */, "compress", async () => {
|
|
@@ -895,6 +936,48 @@ class SolutionPackService {
|
|
|
895
936
|
}
|
|
896
937
|
}
|
|
897
938
|
|
|
939
|
+
// src/services/solution-restore-service.ts
|
|
940
|
+
import {
|
|
941
|
+
ToolErrorCodes as ToolErrorCodes2,
|
|
942
|
+
ToolResult as ToolResult2
|
|
943
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
944
|
+
class SolutionRestoreService {
|
|
945
|
+
optionsBuilder;
|
|
946
|
+
toolsFactory;
|
|
947
|
+
projectExecutor;
|
|
948
|
+
telemetry;
|
|
949
|
+
constructor(optionsBuilder, toolsFactory, projectExecutor, telemetry) {
|
|
950
|
+
this.optionsBuilder = optionsBuilder;
|
|
951
|
+
this.toolsFactory = toolsFactory;
|
|
952
|
+
this.projectExecutor = projectExecutor;
|
|
953
|
+
this.telemetry = telemetry;
|
|
954
|
+
}
|
|
955
|
+
async restoreAsync(parameters, solution, context, cancellationToken) {
|
|
956
|
+
const solutionOptions = await this.optionsBuilder.buildSolutionPackOptions(parameters, solution);
|
|
957
|
+
const solutionTool = await this.toolsFactory.createSolutionToolAsync(solution.SolutionId);
|
|
958
|
+
try {
|
|
959
|
+
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Restore" /* SolutionRestore */, "restore", async () => {
|
|
960
|
+
const restoreResults = await Promise.all([
|
|
961
|
+
solutionTool.restoreAsync(solutionOptions, cancellationToken),
|
|
962
|
+
...solution.Projects.map(async (project) => {
|
|
963
|
+
const projectRestoreOptions = await this.optionsBuilder.buildProjectRestoreOptions(parameters, project);
|
|
964
|
+
return this.projectExecutor.restoreAsync(projectRestoreOptions, project, context, cancellationToken);
|
|
965
|
+
})
|
|
966
|
+
]);
|
|
967
|
+
if (hasFailedResults(restoreResults)) {
|
|
968
|
+
return ToolResult2.error(ToolErrorCodes2.InternalError, `Solution restore failed: ${getFailedResultsMessage(restoreResults)}`);
|
|
969
|
+
}
|
|
970
|
+
return ToolResult2.success();
|
|
971
|
+
}, { solutionId: solution.SolutionId });
|
|
972
|
+
} finally {
|
|
973
|
+
const disposeResult = solutionTool.dispose();
|
|
974
|
+
if (disposeResult instanceof Promise) {
|
|
975
|
+
await disposeResult;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
|
|
898
981
|
// src/services/solution-validate-options-validator.ts
|
|
899
982
|
import {
|
|
900
983
|
PackagerParametersValidator as PackagerParametersValidator2
|
|
@@ -908,8 +991,8 @@ class SolutionValidateOptionsValidator extends PackagerParametersValidator2 {
|
|
|
908
991
|
|
|
909
992
|
// src/services/solution-validate-service.ts
|
|
910
993
|
import {
|
|
911
|
-
ToolErrorCodes as
|
|
912
|
-
ToolResult as
|
|
994
|
+
ToolErrorCodes as ToolErrorCodes3,
|
|
995
|
+
ToolResult as ToolResult3
|
|
913
996
|
} from "@uipath/solutionpackager-tool-core";
|
|
914
997
|
class SolutionValidateService {
|
|
915
998
|
optionsBuilder;
|
|
@@ -924,12 +1007,12 @@ class SolutionValidateService {
|
|
|
924
1007
|
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Validate" /* SolutionValidate */, "validate", async () => {
|
|
925
1008
|
const projectResults = await Promise.all(solution.Projects.map((project) => {
|
|
926
1009
|
if (project.ProjectPath == null) {
|
|
927
|
-
return Promise.resolve(
|
|
1010
|
+
return Promise.resolve(ToolResult3.error(ToolErrorCodes3.InternalError, `Project '${project.Id}' has no ProjectPath; the solution loader must populate it before validation.`));
|
|
928
1011
|
}
|
|
929
1012
|
return this.projectExecutor.validateAsync(this.optionsBuilder.buildProjectValidateOptions(parameters, project), project, context, cancellationToken);
|
|
930
1013
|
}));
|
|
931
1014
|
const failed = projectResults.find((r) => !r.isSuccess);
|
|
932
|
-
return failed ??
|
|
1015
|
+
return failed ?? ToolResult3.success();
|
|
933
1016
|
}, { solutionId: solution.SolutionId });
|
|
934
1017
|
}
|
|
935
1018
|
}
|
|
@@ -948,6 +1031,7 @@ class SolutionPackager {
|
|
|
948
1031
|
projectExecutor;
|
|
949
1032
|
solutionLoader;
|
|
950
1033
|
solutionPackService;
|
|
1034
|
+
solutionRestoreService;
|
|
951
1035
|
solutionValidateService;
|
|
952
1036
|
packOptionsValidator;
|
|
953
1037
|
validateOptionsValidator;
|
|
@@ -966,10 +1050,11 @@ class SolutionPackager {
|
|
|
966
1050
|
const packageIdReader = new PackageIdReader(this.fileSystem, packService);
|
|
967
1051
|
this.optionsBuilder = new OptionsBuilder(packageIdReader, packService, this.fileSystem);
|
|
968
1052
|
this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);
|
|
969
|
-
this.projectExecutor = new ProjectToolExecutor(this.toolsFactory, this.telemetryService
|
|
1053
|
+
this.projectExecutor = new ProjectToolExecutor(this.toolsFactory, this.telemetryService);
|
|
970
1054
|
this.solutionLoader = new SolutionLoader(this.fileSystem);
|
|
971
1055
|
this.governancePolicyService = new GovernancePolicyService(this.fileSystem, this.temporaryStorage);
|
|
972
|
-
this.solutionPackService = new SolutionPackService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.zipService, this.fileSystem, this.telemetryService);
|
|
1056
|
+
this.solutionPackService = new SolutionPackService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.zipService, this.fileSystem, this.telemetryService, this.packageSignService);
|
|
1057
|
+
this.solutionRestoreService = new SolutionRestoreService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.telemetryService);
|
|
973
1058
|
this.solutionValidateService = new SolutionValidateService(this.optionsBuilder, this.projectExecutor, this.telemetryService);
|
|
974
1059
|
}
|
|
975
1060
|
async setupAsync(input, operationId) {
|
|
@@ -1027,7 +1112,7 @@ class SolutionPackager {
|
|
|
1027
1112
|
} catch (error) {
|
|
1028
1113
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1029
1114
|
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1030
|
-
return
|
|
1115
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution pack failed: ${errorMessage}`);
|
|
1031
1116
|
} finally {
|
|
1032
1117
|
await this.temporaryStorage.cleanup();
|
|
1033
1118
|
}
|
|
@@ -1054,7 +1139,32 @@ class SolutionPackager {
|
|
|
1054
1139
|
} catch (error) {
|
|
1055
1140
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1056
1141
|
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1057
|
-
return
|
|
1142
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution validate failed: ${errorMessage}`);
|
|
1143
|
+
} finally {
|
|
1144
|
+
await this.temporaryStorage.cleanup();
|
|
1145
|
+
}
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
1148
|
+
async restoreSolutionAsync(options, cancellationToken) {
|
|
1149
|
+
return await this.telemetryService.trackRequest("SolutionPackager.RestoreSolution" /* SolutionPackagerRestoreSolution */, async () => {
|
|
1150
|
+
try {
|
|
1151
|
+
if (!options.outputPath) {
|
|
1152
|
+
options.outputPath = await this.temporaryStorage.getTempSubfolderPathAsync("restore");
|
|
1153
|
+
}
|
|
1154
|
+
const loadedSolution = await this.solutionLoader.loadSolution(options.inputPath);
|
|
1155
|
+
const solution = this.filterSolutionProjects(loadedSolution, options.projectDesignIds);
|
|
1156
|
+
const context = this.createOperationContext(options, solution);
|
|
1157
|
+
const result = await this.solutionRestoreService.restoreAsync(options, solution, context, cancellationToken);
|
|
1158
|
+
if (result.isSuccess) {
|
|
1159
|
+
this.logger.info("Solution restore completed successfully.");
|
|
1160
|
+
} else {
|
|
1161
|
+
this.logger.error(`Solution restore failed with error code ${result.errorCode}: ${result.message}`);
|
|
1162
|
+
}
|
|
1163
|
+
return result;
|
|
1164
|
+
} catch (error) {
|
|
1165
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1166
|
+
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1167
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution restore failed: ${errorMessage}`);
|
|
1058
1168
|
} finally {
|
|
1059
1169
|
await this.temporaryStorage.cleanup();
|
|
1060
1170
|
}
|
|
@@ -1155,3 +1265,5 @@ export {
|
|
|
1155
1265
|
LogLevel,
|
|
1156
1266
|
BuildConfiguration2 as BuildConfiguration
|
|
1157
1267
|
};
|
|
1268
|
+
|
|
1269
|
+
//# debugId=00A5AFB7E48A8EC764756E2164756E21
|
package/dist/node.js
CHANGED
|
@@ -422,8 +422,8 @@ import {
|
|
|
422
422
|
Path as Path4,
|
|
423
423
|
TargetFramework,
|
|
424
424
|
TemporaryStorageService,
|
|
425
|
-
ToolErrorCodes as
|
|
426
|
-
ToolResult as
|
|
425
|
+
ToolErrorCodes as ToolErrorCodes4,
|
|
426
|
+
ToolResult as ToolResult4,
|
|
427
427
|
toolsFactoryRepository,
|
|
428
428
|
translate as translate3,
|
|
429
429
|
ZipService
|
|
@@ -513,6 +513,18 @@ class OptionsBuilder {
|
|
|
513
513
|
policyFileType: solutionOptions.validateOptions.governanceFileType
|
|
514
514
|
};
|
|
515
515
|
}
|
|
516
|
+
async buildProjectRestoreOptions(solutionOptions, project) {
|
|
517
|
+
if (!solutionOptions.outputPath) {
|
|
518
|
+
throw new Error(translate.t("solutionpackager.optionsBuilder.errors.outputPathRequired"));
|
|
519
|
+
}
|
|
520
|
+
return {
|
|
521
|
+
projectPath: this.resolveProjectPath(solutionOptions, project),
|
|
522
|
+
excludeConfiguredSources: solutionOptions.excludeConfiguredSources ?? false,
|
|
523
|
+
nuGetSourcesConfigPath: solutionOptions.nuGetSourcesConfigPath,
|
|
524
|
+
logLevel: solutionOptions.logLevel,
|
|
525
|
+
outputPath: await this.buildProjectOutputPath(solutionOptions.outputPath, project)
|
|
526
|
+
};
|
|
527
|
+
}
|
|
516
528
|
resolveProjectPath(solutionOptions, project) {
|
|
517
529
|
return Path.join(solutionOptions.inputPath, Path.dirname(project.ProjectRelativePath));
|
|
518
530
|
}
|
|
@@ -805,10 +817,24 @@ class SolutionPackOptionsValidator extends PackagerParametersValidator {
|
|
|
805
817
|
}
|
|
806
818
|
|
|
807
819
|
// src/services/solution-pack-service.ts
|
|
820
|
+
import {
|
|
821
|
+
resolveProducedNupkgsAsync,
|
|
822
|
+
signNupkgsAsync
|
|
823
|
+
} from "@uipath/project-packager";
|
|
808
824
|
import {
|
|
809
825
|
ToolErrorCodes,
|
|
810
826
|
ToolResult
|
|
811
827
|
} from "@uipath/solutionpackager-tool-core";
|
|
828
|
+
|
|
829
|
+
// src/services/tool-result-helpers.ts
|
|
830
|
+
function hasFailedResults(results) {
|
|
831
|
+
return results.some((result) => !result.isSuccess);
|
|
832
|
+
}
|
|
833
|
+
function getFailedResultsMessage(results) {
|
|
834
|
+
return results.filter((result) => !result.isSuccess).map((r) => r.message || "Unknown error").join(", ");
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
// src/services/solution-pack-service.ts
|
|
812
838
|
class SolutionPackService {
|
|
813
839
|
optionsBuilder;
|
|
814
840
|
toolsFactory;
|
|
@@ -816,13 +842,15 @@ class SolutionPackService {
|
|
|
816
842
|
zipService;
|
|
817
843
|
fileSystem;
|
|
818
844
|
telemetry;
|
|
819
|
-
|
|
845
|
+
packageSignService;
|
|
846
|
+
constructor(optionsBuilder, toolsFactory, projectExecutor, zipService, fileSystem, telemetry, packageSignService) {
|
|
820
847
|
this.optionsBuilder = optionsBuilder;
|
|
821
848
|
this.toolsFactory = toolsFactory;
|
|
822
849
|
this.projectExecutor = projectExecutor;
|
|
823
850
|
this.zipService = zipService;
|
|
824
851
|
this.fileSystem = fileSystem;
|
|
825
852
|
this.telemetry = telemetry;
|
|
853
|
+
this.packageSignService = packageSignService;
|
|
826
854
|
}
|
|
827
855
|
async packAsync(parameters, solution, context, cancellationToken) {
|
|
828
856
|
const solutionOptions = await this.optionsBuilder.buildSolutionPackOptions(parameters, solution);
|
|
@@ -837,8 +865,8 @@ class SolutionPackService {
|
|
|
837
865
|
restoreResult,
|
|
838
866
|
...projectResults
|
|
839
867
|
];
|
|
840
|
-
if (
|
|
841
|
-
return ToolResult.error(ToolErrorCodes.InternalError, `Solution pack failed: ${
|
|
868
|
+
if (hasFailedResults(restoreAndPackResults)) {
|
|
869
|
+
return ToolResult.error(ToolErrorCodes.InternalError, `Solution pack failed: ${getFailedResultsMessage(restoreAndPackResults)}`);
|
|
842
870
|
}
|
|
843
871
|
const buildResult = await solutionTool.buildAsync(solutionOptions, cancellationToken);
|
|
844
872
|
if (!buildResult.isSuccess) {
|
|
@@ -847,6 +875,10 @@ class SolutionPackService {
|
|
|
847
875
|
if (!solutionOptions.outputPath) {
|
|
848
876
|
return ToolResult.error(ToolErrorCodes.InternalError, "Solution output path is not defined");
|
|
849
877
|
}
|
|
878
|
+
const signResult = await this.signProjectPackagesAsync(projectResults, parameters.signingInfo);
|
|
879
|
+
if (!signResult.isSuccess) {
|
|
880
|
+
return signResult;
|
|
881
|
+
}
|
|
850
882
|
const archivePath = await this.compressSolutionAsync(parameters, solutionOptions.outputPath);
|
|
851
883
|
return new ToolResult(ToolErrorCodes.Success, undefined, [
|
|
852
884
|
archivePath
|
|
@@ -865,18 +897,27 @@ class SolutionPackService {
|
|
|
865
897
|
async packSingleProjectAsync(parameters, project, context, cancellationToken) {
|
|
866
898
|
try {
|
|
867
899
|
const projectOptions = await this.optionsBuilder.buildProjectPackOptions(parameters, project);
|
|
868
|
-
return await this.projectExecutor.packAsync(projectOptions, project, context,
|
|
900
|
+
return await this.projectExecutor.packAsync(projectOptions, project, context, cancellationToken);
|
|
869
901
|
} catch (error) {
|
|
870
902
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
871
903
|
return ToolResult.error(ToolErrorCodes.InternalError, errorMessage);
|
|
872
904
|
}
|
|
873
905
|
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
const
|
|
879
|
-
|
|
906
|
+
async signProjectPackagesAsync(projectResults, signingInfo) {
|
|
907
|
+
if (!signingInfo?.certificatePath) {
|
|
908
|
+
return ToolResult.success();
|
|
909
|
+
}
|
|
910
|
+
const producedPaths = projectResults.flatMap((result) => result.packages);
|
|
911
|
+
const resolved = await Promise.all(producedPaths.map(async (producedPath) => ({
|
|
912
|
+
producedPath,
|
|
913
|
+
nupkgs: await resolveProducedNupkgsAsync(this.fileSystem, producedPath)
|
|
914
|
+
})));
|
|
915
|
+
const unresolved = resolved.filter((entry) => entry.nupkgs.length === 0).map((entry) => entry.producedPath);
|
|
916
|
+
if (unresolved.length > 0) {
|
|
917
|
+
return ToolResult.error(ToolErrorCodes.InternalError, `Package signing was required but no .nupkg was found to sign for: ${unresolved.join(", ")}.`);
|
|
918
|
+
}
|
|
919
|
+
const nupkgsToSign = resolved.flatMap((entry) => entry.nupkgs);
|
|
920
|
+
return signNupkgsAsync(this.packageSignService, nupkgsToSign, signingInfo);
|
|
880
921
|
}
|
|
881
922
|
async compressSolutionAsync(parameters, outputPath) {
|
|
882
923
|
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Compress" /* SolutionCompress */, "compress", async () => {
|
|
@@ -915,6 +956,48 @@ class SolutionPackService {
|
|
|
915
956
|
}
|
|
916
957
|
}
|
|
917
958
|
|
|
959
|
+
// src/services/solution-restore-service.ts
|
|
960
|
+
import {
|
|
961
|
+
ToolErrorCodes as ToolErrorCodes2,
|
|
962
|
+
ToolResult as ToolResult2
|
|
963
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
964
|
+
class SolutionRestoreService {
|
|
965
|
+
optionsBuilder;
|
|
966
|
+
toolsFactory;
|
|
967
|
+
projectExecutor;
|
|
968
|
+
telemetry;
|
|
969
|
+
constructor(optionsBuilder, toolsFactory, projectExecutor, telemetry) {
|
|
970
|
+
this.optionsBuilder = optionsBuilder;
|
|
971
|
+
this.toolsFactory = toolsFactory;
|
|
972
|
+
this.projectExecutor = projectExecutor;
|
|
973
|
+
this.telemetry = telemetry;
|
|
974
|
+
}
|
|
975
|
+
async restoreAsync(parameters, solution, context, cancellationToken) {
|
|
976
|
+
const solutionOptions = await this.optionsBuilder.buildSolutionPackOptions(parameters, solution);
|
|
977
|
+
const solutionTool = await this.toolsFactory.createSolutionToolAsync(solution.SolutionId);
|
|
978
|
+
try {
|
|
979
|
+
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Restore" /* SolutionRestore */, "restore", async () => {
|
|
980
|
+
const restoreResults = await Promise.all([
|
|
981
|
+
solutionTool.restoreAsync(solutionOptions, cancellationToken),
|
|
982
|
+
...solution.Projects.map(async (project) => {
|
|
983
|
+
const projectRestoreOptions = await this.optionsBuilder.buildProjectRestoreOptions(parameters, project);
|
|
984
|
+
return this.projectExecutor.restoreAsync(projectRestoreOptions, project, context, cancellationToken);
|
|
985
|
+
})
|
|
986
|
+
]);
|
|
987
|
+
if (hasFailedResults(restoreResults)) {
|
|
988
|
+
return ToolResult2.error(ToolErrorCodes2.InternalError, `Solution restore failed: ${getFailedResultsMessage(restoreResults)}`);
|
|
989
|
+
}
|
|
990
|
+
return ToolResult2.success();
|
|
991
|
+
}, { solutionId: solution.SolutionId });
|
|
992
|
+
} finally {
|
|
993
|
+
const disposeResult = solutionTool.dispose();
|
|
994
|
+
if (disposeResult instanceof Promise) {
|
|
995
|
+
await disposeResult;
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
|
|
918
1001
|
// src/services/solution-validate-options-validator.ts
|
|
919
1002
|
import {
|
|
920
1003
|
PackagerParametersValidator as PackagerParametersValidator2
|
|
@@ -928,8 +1011,8 @@ class SolutionValidateOptionsValidator extends PackagerParametersValidator2 {
|
|
|
928
1011
|
|
|
929
1012
|
// src/services/solution-validate-service.ts
|
|
930
1013
|
import {
|
|
931
|
-
ToolErrorCodes as
|
|
932
|
-
ToolResult as
|
|
1014
|
+
ToolErrorCodes as ToolErrorCodes3,
|
|
1015
|
+
ToolResult as ToolResult3
|
|
933
1016
|
} from "@uipath/solutionpackager-tool-core";
|
|
934
1017
|
class SolutionValidateService {
|
|
935
1018
|
optionsBuilder;
|
|
@@ -944,12 +1027,12 @@ class SolutionValidateService {
|
|
|
944
1027
|
return await this.telemetry.trackDependencyOperation("SolutionPackager.Solution.Validate" /* SolutionValidate */, "validate", async () => {
|
|
945
1028
|
const projectResults = await Promise.all(solution.Projects.map((project) => {
|
|
946
1029
|
if (project.ProjectPath == null) {
|
|
947
|
-
return Promise.resolve(
|
|
1030
|
+
return Promise.resolve(ToolResult3.error(ToolErrorCodes3.InternalError, `Project '${project.Id}' has no ProjectPath; the solution loader must populate it before validation.`));
|
|
948
1031
|
}
|
|
949
1032
|
return this.projectExecutor.validateAsync(this.optionsBuilder.buildProjectValidateOptions(parameters, project), project, context, cancellationToken);
|
|
950
1033
|
}));
|
|
951
1034
|
const failed = projectResults.find((r) => !r.isSuccess);
|
|
952
|
-
return failed ??
|
|
1035
|
+
return failed ?? ToolResult3.success();
|
|
953
1036
|
}, { solutionId: solution.SolutionId });
|
|
954
1037
|
}
|
|
955
1038
|
}
|
|
@@ -968,6 +1051,7 @@ class SolutionPackager {
|
|
|
968
1051
|
projectExecutor;
|
|
969
1052
|
solutionLoader;
|
|
970
1053
|
solutionPackService;
|
|
1054
|
+
solutionRestoreService;
|
|
971
1055
|
solutionValidateService;
|
|
972
1056
|
packOptionsValidator;
|
|
973
1057
|
validateOptionsValidator;
|
|
@@ -986,10 +1070,11 @@ class SolutionPackager {
|
|
|
986
1070
|
const packageIdReader = new PackageIdReader(this.fileSystem, packService);
|
|
987
1071
|
this.optionsBuilder = new OptionsBuilder(packageIdReader, packService, this.fileSystem);
|
|
988
1072
|
this.toolsFactory = new ToolsFactory(this.repository, this.fileSystem);
|
|
989
|
-
this.projectExecutor = new ProjectToolExecutor(this.toolsFactory, this.telemetryService
|
|
1073
|
+
this.projectExecutor = new ProjectToolExecutor(this.toolsFactory, this.telemetryService);
|
|
990
1074
|
this.solutionLoader = new SolutionLoader(this.fileSystem);
|
|
991
1075
|
this.governancePolicyService = new GovernancePolicyService(this.fileSystem, this.temporaryStorage);
|
|
992
|
-
this.solutionPackService = new SolutionPackService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.zipService, this.fileSystem, this.telemetryService);
|
|
1076
|
+
this.solutionPackService = new SolutionPackService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.zipService, this.fileSystem, this.telemetryService, this.packageSignService);
|
|
1077
|
+
this.solutionRestoreService = new SolutionRestoreService(this.optionsBuilder, this.toolsFactory, this.projectExecutor, this.telemetryService);
|
|
993
1078
|
this.solutionValidateService = new SolutionValidateService(this.optionsBuilder, this.projectExecutor, this.telemetryService);
|
|
994
1079
|
}
|
|
995
1080
|
async setupAsync(input, operationId) {
|
|
@@ -1047,7 +1132,7 @@ class SolutionPackager {
|
|
|
1047
1132
|
} catch (error) {
|
|
1048
1133
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1049
1134
|
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1050
|
-
return
|
|
1135
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution pack failed: ${errorMessage}`);
|
|
1051
1136
|
} finally {
|
|
1052
1137
|
await this.temporaryStorage.cleanup();
|
|
1053
1138
|
}
|
|
@@ -1074,7 +1159,32 @@ class SolutionPackager {
|
|
|
1074
1159
|
} catch (error) {
|
|
1075
1160
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1076
1161
|
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1077
|
-
return
|
|
1162
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution validate failed: ${errorMessage}`);
|
|
1163
|
+
} finally {
|
|
1164
|
+
await this.temporaryStorage.cleanup();
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1168
|
+
async restoreSolutionAsync(options, cancellationToken) {
|
|
1169
|
+
return await this.telemetryService.trackRequest("SolutionPackager.RestoreSolution" /* SolutionPackagerRestoreSolution */, async () => {
|
|
1170
|
+
try {
|
|
1171
|
+
if (!options.outputPath) {
|
|
1172
|
+
options.outputPath = await this.temporaryStorage.getTempSubfolderPathAsync("restore");
|
|
1173
|
+
}
|
|
1174
|
+
const loadedSolution = await this.solutionLoader.loadSolution(options.inputPath);
|
|
1175
|
+
const solution = this.filterSolutionProjects(loadedSolution, options.projectDesignIds);
|
|
1176
|
+
const context = this.createOperationContext(options, solution);
|
|
1177
|
+
const result = await this.solutionRestoreService.restoreAsync(options, solution, context, cancellationToken);
|
|
1178
|
+
if (result.isSuccess) {
|
|
1179
|
+
this.logger.info("Solution restore completed successfully.");
|
|
1180
|
+
} else {
|
|
1181
|
+
this.logger.error(`Solution restore failed with error code ${result.errorCode}: ${result.message}`);
|
|
1182
|
+
}
|
|
1183
|
+
return result;
|
|
1184
|
+
} catch (error) {
|
|
1185
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1186
|
+
this.logger.error(`Processing error: ${errorMessage}`);
|
|
1187
|
+
return ToolResult4.error(ToolErrorCodes4.InternalError, `Solution restore failed: ${errorMessage}`);
|
|
1078
1188
|
} finally {
|
|
1079
1189
|
await this.temporaryStorage.cleanup();
|
|
1080
1190
|
}
|
|
@@ -1152,3 +1262,5 @@ export {
|
|
|
1152
1262
|
SolutionPackager,
|
|
1153
1263
|
SolutionPackOptions
|
|
1154
1264
|
};
|
|
1265
|
+
|
|
1266
|
+
//# debugId=374EFD55C7484FC664756E2164756E21
|
|
@@ -10,9 +10,17 @@ import { type ISolutionPackager } from "./services/solution-packager.js";
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```typescript
|
|
13
|
-
* //
|
|
14
|
-
* import '@uipath/
|
|
15
|
-
* import '@uipath/packager-tool-
|
|
13
|
+
* // Register the tools you need explicitly
|
|
14
|
+
* import { ResourceBuilderToolFactory } from '@uipath/resource-builder-tool';
|
|
15
|
+
* import { ConnectorToolFactory } from '@uipath/packager-tool-connector';
|
|
16
|
+
* import { FlowToolFactory } from '@uipath/packager-tool-flow';
|
|
17
|
+
* import { toolsFactoryRepository } from '@uipath/solutionpackager-tool-core';
|
|
18
|
+
*
|
|
19
|
+
* // ResourceBuilder is essential to solution packing — register it (consumer
|
|
20
|
+
* // controls the @uipath/resource-builder-tool version).
|
|
21
|
+
* toolsFactoryRepository.registerSolutionToolFactory(new ResourceBuilderToolFactory());
|
|
22
|
+
* toolsFactoryRepository.registerProjectToolFactory(new ConnectorToolFactory());
|
|
23
|
+
* toolsFactoryRepository.registerProjectToolFactory(new FlowToolFactory());
|
|
16
24
|
*
|
|
17
25
|
* // Create SolutionPackager
|
|
18
26
|
* const packager = await createBrowserSolutionPackager({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IPackService, UiPathProject } from "@uipath/project-packager";
|
|
2
|
-
import { type IFileSystem, type IProjectPackOptions, type IProjectValidateOptions, type ISolutionPackOptions } from "@uipath/solutionpackager-tool-core";
|
|
2
|
+
import { type IFileSystem, type IProjectPackOptions, type IProjectRestoreOptions, type IProjectValidateOptions, type ISolutionPackOptions } from "@uipath/solutionpackager-tool-core";
|
|
3
3
|
import type { LoadedUiPathSolution } from "../models/loaded-uipath-solution.js";
|
|
4
4
|
import type { SolutionPackOptions } from "../models/solution-pack-options.js";
|
|
5
5
|
import type { IPackageIdReader } from "./package-id-reader.js";
|
|
@@ -19,6 +19,10 @@ export interface IOptionsBuilder {
|
|
|
19
19
|
* Build project validate options from solution parameters, for a specific project
|
|
20
20
|
*/
|
|
21
21
|
buildProjectValidateOptions(options: SolutionPackOptions, project: UiPathProject): IProjectValidateOptions;
|
|
22
|
+
/**
|
|
23
|
+
* Build project restore options from solution parameters, for a specific project
|
|
24
|
+
*/
|
|
25
|
+
buildProjectRestoreOptions(options: SolutionPackOptions, project: UiPathProject): Promise<IProjectRestoreOptions>;
|
|
22
26
|
}
|
|
23
27
|
export declare class OptionsBuilder implements IOptionsBuilder {
|
|
24
28
|
private readonly packageIdReader;
|
|
@@ -33,6 +37,7 @@ export declare class OptionsBuilder implements IOptionsBuilder {
|
|
|
33
37
|
*/
|
|
34
38
|
buildProjectPackOptions(solutionOptions: SolutionPackOptions, project: UiPathProject): Promise<IProjectPackOptions>;
|
|
35
39
|
buildProjectValidateOptions(solutionOptions: SolutionPackOptions, project: UiPathProject): IProjectValidateOptions;
|
|
40
|
+
buildProjectRestoreOptions(solutionOptions: SolutionPackOptions, project: UiPathProject): Promise<IProjectRestoreOptions>;
|
|
36
41
|
private resolveProjectPath;
|
|
37
42
|
/**
|
|
38
43
|
* Build the output path for a project
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type IPackageSignService, type IProjectToolExecutor, type ITelemetryService, type IToolsFactory } from "@uipath/project-packager";
|
|
2
2
|
import { type IFileSystem, type IZipService, type ProjectOperationContext, ToolResult } from "@uipath/solutionpackager-tool-core";
|
|
3
3
|
import type { LoadedUiPathSolution } from "../models/loaded-uipath-solution.js";
|
|
4
4
|
import type { SolutionPackOptions } from "../models/solution-pack-options.js";
|
|
@@ -19,7 +19,8 @@ export declare class SolutionPackService implements ISolutionPackService {
|
|
|
19
19
|
private readonly zipService;
|
|
20
20
|
private readonly fileSystem;
|
|
21
21
|
private readonly telemetry;
|
|
22
|
-
|
|
22
|
+
private readonly packageSignService?;
|
|
23
|
+
constructor(optionsBuilder: IOptionsBuilder, toolsFactory: IToolsFactory, projectExecutor: IProjectToolExecutor, zipService: IZipService, fileSystem: IFileSystem, telemetry: ITelemetryService, packageSignService?: IPackageSignService | undefined);
|
|
23
24
|
packAsync(parameters: SolutionPackOptions, solution: LoadedUiPathSolution, context: ProjectOperationContext, cancellationToken?: AbortSignal): Promise<ToolResult>;
|
|
24
25
|
/**
|
|
25
26
|
* Pack all projects in parallel
|
|
@@ -39,17 +40,21 @@ export declare class SolutionPackService implements ISolutionPackService {
|
|
|
39
40
|
*/
|
|
40
41
|
private packSingleProjectAsync;
|
|
41
42
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* Sign the project .nupkg(s) produced for the solution, before zipping.
|
|
44
|
+
*
|
|
45
|
+
* Project tools write their package into the solution output tree; the
|
|
46
|
+
* workflow compiler reports a content *folder* rather than the .nupkg, so
|
|
47
|
+
* each produced path is resolved to the real .nupkg first. Unlike the
|
|
48
|
+
* single-project packager there's no copy/pack-from-content step here, so a
|
|
49
|
+
* path that resolves to nothing means the package is genuinely missing —
|
|
50
|
+
* fail loudly rather than zip an unsigned (or absent) package.
|
|
51
|
+
*
|
|
52
|
+
* A no-op when signing isn't requested (no signing info or no certificate).
|
|
53
|
+
* @param projectResults The per-project pack results, holding produced paths
|
|
54
|
+
* @param signingInfo Signing configuration, if signing was requested
|
|
55
|
+
* @returns Success, or the first signing/resolution failure
|
|
45
56
|
*/
|
|
46
|
-
private
|
|
47
|
-
/**
|
|
48
|
-
* Get a combined error message from all failed results
|
|
49
|
-
* @param results Array of tool results
|
|
50
|
-
* @returns Combined error message
|
|
51
|
-
*/
|
|
52
|
-
private getFailedResultsMessage;
|
|
57
|
+
private signProjectPackagesAsync;
|
|
53
58
|
/**
|
|
54
59
|
* Compress the solution output folder into a zip archive
|
|
55
60
|
* @param parameters Solution pack parameters
|
|
@@ -39,6 +39,15 @@ export interface ISolutionPackager {
|
|
|
39
39
|
* @returns ToolResult indicating success if every project passed validation
|
|
40
40
|
*/
|
|
41
41
|
validateSolutionAsync(options: SolutionPackOptions, cancellationToken?: AbortSignal): Promise<ToolResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Restore dependencies for every project in a solution, without packing
|
|
44
|
+
* or building. Resolves NuGet dependencies (including authenticated feeds
|
|
45
|
+
* carried by `options.connection`) so a later pack can compile offline.
|
|
46
|
+
* @param options Solution pack options containing all parameters
|
|
47
|
+
* @param cancellationToken Optional cancellation token
|
|
48
|
+
* @returns ToolResult indicating success if every project restored
|
|
49
|
+
*/
|
|
50
|
+
restoreSolutionAsync(options: SolutionPackOptions, cancellationToken?: AbortSignal): Promise<ToolResult>;
|
|
42
51
|
/**
|
|
43
52
|
* Convert a successful ToolResult to a list of package streams.
|
|
44
53
|
* @param result The ToolResult to convert
|
|
@@ -60,6 +69,7 @@ export declare class SolutionPackager implements ISolutionPackager {
|
|
|
60
69
|
private readonly projectExecutor;
|
|
61
70
|
private readonly solutionLoader;
|
|
62
71
|
private readonly solutionPackService;
|
|
72
|
+
private readonly solutionRestoreService;
|
|
63
73
|
private readonly solutionValidateService;
|
|
64
74
|
private readonly packOptionsValidator;
|
|
65
75
|
private readonly validateOptionsValidator;
|
|
@@ -91,6 +101,11 @@ export declare class SolutionPackager implements ISolutionPackager {
|
|
|
91
101
|
* Validate all projects in a solution using the provided options.
|
|
92
102
|
*/
|
|
93
103
|
validateSolutionAsync(options: SolutionPackOptions, cancellationToken?: AbortSignal): Promise<ToolResult>;
|
|
104
|
+
/**
|
|
105
|
+
* Restore dependencies for every project in a solution, without packing
|
|
106
|
+
* or building.
|
|
107
|
+
*/
|
|
108
|
+
restoreSolutionAsync(options: SolutionPackOptions, cancellationToken?: AbortSignal): Promise<ToolResult>;
|
|
94
109
|
/**
|
|
95
110
|
* Narrow the solution's project list to the subset the caller asked for.
|
|
96
111
|
* An empty or absent `projectDesignIds` is a no-op (the whole solution is
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export declare enum TelemetryNames {
|
|
2
2
|
SolutionPackagerPackSolution = "SolutionPackager.PackSolution",
|
|
3
3
|
SolutionPackagerValidateSolution = "SolutionPackager.ValidateSolution",
|
|
4
|
+
SolutionPackagerRestoreSolution = "SolutionPackager.RestoreSolution",
|
|
4
5
|
SolutionPack = "SolutionPackager.Solution.Pack",
|
|
5
6
|
SolutionValidate = "SolutionPackager.Solution.Validate",
|
|
7
|
+
SolutionRestore = "SolutionPackager.Solution.Restore",
|
|
6
8
|
SolutionCompress = "SolutionPackager.Solution.Compress"
|
|
7
9
|
}
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import "@uipath/packager-tool-workflowcompiler";
|
|
3
|
-
import "@uipath/packager-tool-apiworkflow";
|
|
4
|
-
import "@uipath/packager-tool-bpmn";
|
|
5
|
-
import "@uipath/packager-tool-case";
|
|
6
|
-
import "@uipath/packager-tool-flow";
|
|
7
|
-
import "@uipath/tool-agent";
|
|
8
|
-
import "@uipath/packager-tool-functions";
|
|
9
|
-
import "@uipath/packager-tool-webapp";
|
|
10
|
-
import "@uipath/resource-builder-tool";
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,61 +1,38 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
"./node": {
|
|
14
|
-
"types": "./dist/src/node.d.ts",
|
|
15
|
-
"default": "./dist/node.js"
|
|
16
|
-
}
|
|
2
|
+
"name": "@uipath/solution-packager",
|
|
3
|
+
"license": "MIT",
|
|
4
|
+
"version": "1.197.0-preview.65",
|
|
5
|
+
"description": "UiPath Solution Packager - core library for packing UiPath solutions",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/src/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
17
12
|
},
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"@uipath/tool-agent": "^1.2.6",
|
|
44
|
-
"@uipath/packager-tool-apiworkflow": "1.196.0",
|
|
45
|
-
"@uipath/packager-tool-bpmn": "1.196.0",
|
|
46
|
-
"@uipath/packager-tool-case": "1.196.0",
|
|
47
|
-
"@uipath/packager-tool-connector": "1.196.0",
|
|
48
|
-
"@uipath/packager-tool-flow": "1.196.0",
|
|
49
|
-
"@uipath/packager-tool-functions": "1.196.0",
|
|
50
|
-
"@uipath/packager-tool-webapp": "1.196.0",
|
|
51
|
-
"@uipath/packager-tool-workflowcompiler": "1.196.0",
|
|
52
|
-
"@vitest/browser": "^4.1.6",
|
|
53
|
-
"@vitest/browser-playwright": "^4.1.6",
|
|
54
|
-
"@vitest/coverage-v8": "^4.1.6",
|
|
55
|
-
"playwright": "^1.57.0",
|
|
56
|
-
"typescript": "^6.0.2",
|
|
57
|
-
"vite-tsconfig-paths": "^6.1.1",
|
|
58
|
-
"vitest": "^4.1.6"
|
|
59
|
-
},
|
|
60
|
-
"gitHead": "bed2b46f1ec33a47a7dcae2e6d4b7ab99bd06981"
|
|
13
|
+
"./node": {
|
|
14
|
+
"types": "./dist/src/node.d.ts",
|
|
15
|
+
"default": "./dist/node.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"types": "./dist/src/index.d.ts",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/UiPath/cli.git",
|
|
22
|
+
"directory": "packages/packager/solution-packager"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"registry": "https://registry.npmjs.org/"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@uipath/project-packager": "1.197.0",
|
|
32
|
+
"@uipath/solutionpackager-tool-core": "1.197.0"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"fflate": "^0.8.2"
|
|
36
|
+
},
|
|
37
|
+
"gitHead": "9388ccbe5e739c9578bfd9b5395980fb63e11d9c"
|
|
61
38
|
}
|