@uipath/project-packager 1.1.10 → 1.196.0
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/browser.js +2380 -0
- package/dist/index.js +1331 -131
- package/dist/node.js +1225 -110
- package/dist/src/base-browser-packager-factory.d.ts +37 -0
- package/dist/src/base-node-packager-factory.d.ts +9 -2
- package/dist/src/browser-project-packager-factory.d.ts +26 -0
- package/dist/src/browser.d.ts +3 -0
- package/dist/src/i18n/locales/en.d.ts +30 -1
- package/dist/src/index.d.ts +6 -2
- package/dist/src/models/packager-config.d.ts +2 -2
- package/dist/src/models/packager-parameters.d.ts +8 -0
- package/dist/src/models/project-build-options.d.ts +4 -0
- package/dist/src/models/project-models.d.ts +0 -11
- package/dist/src/node.d.ts +18 -3
- package/dist/src/publish/models/publish-options.d.ts +158 -0
- package/dist/src/publish/node-project-publisher-factory.d.ts +6 -0
- package/dist/src/publish/services/local-folder-publisher.d.ts +19 -0
- package/dist/src/publish/services/nuget-feed-publisher.d.ts +29 -0
- package/dist/src/publish/services/orchestrator-feed-types.d.ts +98 -0
- package/dist/src/publish/services/orchestrator-feeds-service.d.ts +44 -0
- package/dist/src/publish/services/orchestrator-publisher.d.ts +78 -0
- package/dist/src/publish/services/project-publisher.d.ts +29 -0
- package/dist/src/services/dotnet-discovery-service.d.ts +18 -0
- package/dist/src/services/nupkg-resolver.d.ts +20 -0
- package/dist/src/services/package-sign-service.d.ts +3 -2
- package/dist/src/services/package-signer.d.ts +24 -0
- package/dist/src/services/project-loader.d.ts +0 -1
- package/dist/src/services/project-packager.d.ts +19 -13
- package/dist/src/services/project-tool-executor.d.ts +1 -1
- package/dist/tests/{project-packager-e2e.test.d.ts → project-packager.e2e.test.d.ts} +1 -0
- package/dist/tests/project-packager.spec.d.ts +1 -0
- package/dist/tests/publish/local-folder-publisher.spec.d.ts +1 -0
- package/dist/tests/publish/nuget-feed-publisher.spec.d.ts +1 -0
- package/dist/tests/publish/orchestrator-feeds-service.spec.d.ts +1 -0
- package/dist/tests/publish/orchestrator-publisher.spec.d.ts +1 -0
- package/dist/tests/publish/project-publisher.spec.d.ts +1 -0
- package/dist/tests/tools-factory-repository.spec.d.ts +1 -0
- package/package.json +23 -30
- /package/dist/tests/{governance-policy-service.test.d.ts → governance-policy-service.spec.d.ts} +0 -0
- /package/dist/tests/{pack-service.test.d.ts → pack-service.spec.d.ts} +0 -0
- /package/dist/tests/{project-loader.test.d.ts → project-loader.spec.d.ts} +0 -0
- /package/dist/tests/{project-packager.test.d.ts → project-pack-options-builder.spec.d.ts} +0 -0
- /package/dist/tests/{project-tool-executor.test.d.ts → project-tool-executor.spec.d.ts} +0 -0
- /package/dist/tests/{tools-factory-repository.test.d.ts → publish/node-project-publisher-factory.spec.d.ts} +0 -0
package/dist/node.js
CHANGED
|
@@ -46,9 +46,38 @@ var de_default = {
|
|
|
46
46
|
signing: {
|
|
47
47
|
errors: {
|
|
48
48
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
49
|
-
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
dotnet: {
|
|
50
52
|
info: {
|
|
51
|
-
|
|
53
|
+
available: "dotnet CLI is available (version {version})."
|
|
54
|
+
},
|
|
55
|
+
warnings: {
|
|
56
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
publish: {
|
|
60
|
+
errors: {
|
|
61
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
62
|
+
packageNotFound: "Package file not found: {path}",
|
|
63
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
64
|
+
publishFailed: "Publish failed: {message}",
|
|
65
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
66
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
67
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
68
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
69
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
70
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
71
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
72
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
73
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
74
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
75
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
76
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
77
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
78
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
79
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
80
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
52
81
|
}
|
|
53
82
|
}
|
|
54
83
|
}
|
|
@@ -100,9 +129,38 @@ var en = {
|
|
|
100
129
|
signing: {
|
|
101
130
|
errors: {
|
|
102
131
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
103
|
-
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
dotnet: {
|
|
104
135
|
info: {
|
|
105
|
-
|
|
136
|
+
available: "dotnet CLI is available (version {version})."
|
|
137
|
+
},
|
|
138
|
+
warnings: {
|
|
139
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
publish: {
|
|
143
|
+
errors: {
|
|
144
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
145
|
+
packageNotFound: "Package file not found: {path}",
|
|
146
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
147
|
+
publishFailed: "Publish failed: {message}",
|
|
148
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
149
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
150
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
151
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
152
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
153
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
154
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
155
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
156
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
157
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
158
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
159
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
160
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
161
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
162
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
163
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
106
164
|
}
|
|
107
165
|
}
|
|
108
166
|
}
|
|
@@ -153,9 +211,38 @@ var es_default = {
|
|
|
153
211
|
signing: {
|
|
154
212
|
errors: {
|
|
155
213
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
156
|
-
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
dotnet: {
|
|
157
217
|
info: {
|
|
158
|
-
|
|
218
|
+
available: "dotnet CLI is available (version {version})."
|
|
219
|
+
},
|
|
220
|
+
warnings: {
|
|
221
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
publish: {
|
|
225
|
+
errors: {
|
|
226
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
227
|
+
packageNotFound: "Package file not found: {path}",
|
|
228
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
229
|
+
publishFailed: "Publish failed: {message}",
|
|
230
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
231
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
232
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
233
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
234
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
235
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
236
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
237
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
238
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
239
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
240
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
241
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
242
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
243
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
244
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
245
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
159
246
|
}
|
|
160
247
|
}
|
|
161
248
|
}
|
|
@@ -206,9 +293,38 @@ var es_MX_default = {
|
|
|
206
293
|
signing: {
|
|
207
294
|
errors: {
|
|
208
295
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
209
|
-
}
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
dotnet: {
|
|
210
299
|
info: {
|
|
211
|
-
|
|
300
|
+
available: "dotnet CLI is available (version {version})."
|
|
301
|
+
},
|
|
302
|
+
warnings: {
|
|
303
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
publish: {
|
|
307
|
+
errors: {
|
|
308
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
309
|
+
packageNotFound: "Package file not found: {path}",
|
|
310
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
311
|
+
publishFailed: "Publish failed: {message}",
|
|
312
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
313
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
314
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
315
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
316
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
317
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
318
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
319
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
320
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
321
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
322
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
323
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
324
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
325
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
326
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
327
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
212
328
|
}
|
|
213
329
|
}
|
|
214
330
|
}
|
|
@@ -259,9 +375,38 @@ var fr_default = {
|
|
|
259
375
|
signing: {
|
|
260
376
|
errors: {
|
|
261
377
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
262
|
-
}
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
dotnet: {
|
|
263
381
|
info: {
|
|
264
|
-
|
|
382
|
+
available: "dotnet CLI is available (version {version})."
|
|
383
|
+
},
|
|
384
|
+
warnings: {
|
|
385
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
publish: {
|
|
389
|
+
errors: {
|
|
390
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
391
|
+
packageNotFound: "Package file not found: {path}",
|
|
392
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
393
|
+
publishFailed: "Publish failed: {message}",
|
|
394
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
395
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
396
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
397
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
398
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
399
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
400
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
401
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
402
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
403
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
404
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
405
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
406
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
407
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
408
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
409
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
265
410
|
}
|
|
266
411
|
}
|
|
267
412
|
}
|
|
@@ -312,9 +457,38 @@ var ja_default = {
|
|
|
312
457
|
signing: {
|
|
313
458
|
errors: {
|
|
314
459
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
315
|
-
}
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
dotnet: {
|
|
316
463
|
info: {
|
|
317
|
-
|
|
464
|
+
available: "dotnet CLI is available (version {version})."
|
|
465
|
+
},
|
|
466
|
+
warnings: {
|
|
467
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
publish: {
|
|
471
|
+
errors: {
|
|
472
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
473
|
+
packageNotFound: "Package file not found: {path}",
|
|
474
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
475
|
+
publishFailed: "Publish failed: {message}",
|
|
476
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
477
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
478
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
479
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
480
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
481
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
482
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
483
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
484
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
485
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
486
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
487
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
488
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
489
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
490
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
491
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
318
492
|
}
|
|
319
493
|
}
|
|
320
494
|
}
|
|
@@ -365,9 +539,38 @@ var ko_default = {
|
|
|
365
539
|
signing: {
|
|
366
540
|
errors: {
|
|
367
541
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
368
|
-
}
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
dotnet: {
|
|
369
545
|
info: {
|
|
370
|
-
|
|
546
|
+
available: "dotnet CLI is available (version {version})."
|
|
547
|
+
},
|
|
548
|
+
warnings: {
|
|
549
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
publish: {
|
|
553
|
+
errors: {
|
|
554
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
555
|
+
packageNotFound: "Package file not found: {path}",
|
|
556
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
557
|
+
publishFailed: "Publish failed: {message}",
|
|
558
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
559
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
560
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
561
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
562
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
563
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
564
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
565
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
566
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
567
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
568
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
569
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
570
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
571
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
572
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
573
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
371
574
|
}
|
|
372
575
|
}
|
|
373
576
|
}
|
|
@@ -418,9 +621,38 @@ var pt_default = {
|
|
|
418
621
|
signing: {
|
|
419
622
|
errors: {
|
|
420
623
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
421
|
-
}
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
dotnet: {
|
|
422
627
|
info: {
|
|
423
|
-
|
|
628
|
+
available: "dotnet CLI is available (version {version})."
|
|
629
|
+
},
|
|
630
|
+
warnings: {
|
|
631
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
632
|
+
}
|
|
633
|
+
},
|
|
634
|
+
publish: {
|
|
635
|
+
errors: {
|
|
636
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
637
|
+
packageNotFound: "Package file not found: {path}",
|
|
638
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
639
|
+
publishFailed: "Publish failed: {message}",
|
|
640
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
641
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
642
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
643
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
644
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
645
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
646
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
647
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
648
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
649
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
650
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
651
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
652
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
653
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
654
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
655
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
424
656
|
}
|
|
425
657
|
}
|
|
426
658
|
}
|
|
@@ -471,9 +703,38 @@ var pt_BR_default = {
|
|
|
471
703
|
signing: {
|
|
472
704
|
errors: {
|
|
473
705
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
474
|
-
}
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
dotnet: {
|
|
475
709
|
info: {
|
|
476
|
-
|
|
710
|
+
available: "dotnet CLI is available (version {version})."
|
|
711
|
+
},
|
|
712
|
+
warnings: {
|
|
713
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
publish: {
|
|
717
|
+
errors: {
|
|
718
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
719
|
+
packageNotFound: "Package file not found: {path}",
|
|
720
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
721
|
+
publishFailed: "Publish failed: {message}",
|
|
722
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
723
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
724
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
725
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
726
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
727
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
728
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
729
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
730
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
731
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
732
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
733
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
734
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
735
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
736
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
737
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
477
738
|
}
|
|
478
739
|
}
|
|
479
740
|
}
|
|
@@ -524,9 +785,38 @@ var ro_default = {
|
|
|
524
785
|
signing: {
|
|
525
786
|
errors: {
|
|
526
787
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
527
|
-
}
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
dotnet: {
|
|
528
791
|
info: {
|
|
529
|
-
|
|
792
|
+
available: "dotnet CLI is available (version {version})."
|
|
793
|
+
},
|
|
794
|
+
warnings: {
|
|
795
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
796
|
+
}
|
|
797
|
+
},
|
|
798
|
+
publish: {
|
|
799
|
+
errors: {
|
|
800
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
801
|
+
packageNotFound: "Package file not found: {path}",
|
|
802
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
803
|
+
publishFailed: "Publish failed: {message}",
|
|
804
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
805
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
806
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
807
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
808
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
809
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
810
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
811
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
812
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
813
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
814
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
815
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
816
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
817
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
818
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
819
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
530
820
|
}
|
|
531
821
|
}
|
|
532
822
|
}
|
|
@@ -577,9 +867,38 @@ var ru_default = {
|
|
|
577
867
|
signing: {
|
|
578
868
|
errors: {
|
|
579
869
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
580
|
-
}
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
dotnet: {
|
|
581
873
|
info: {
|
|
582
|
-
|
|
874
|
+
available: "dotnet CLI is available (version {version})."
|
|
875
|
+
},
|
|
876
|
+
warnings: {
|
|
877
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
publish: {
|
|
881
|
+
errors: {
|
|
882
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
883
|
+
packageNotFound: "Package file not found: {path}",
|
|
884
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
885
|
+
publishFailed: "Publish failed: {message}",
|
|
886
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
887
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
888
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
889
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
890
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
891
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
892
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
893
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
894
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
895
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
896
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
897
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
898
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
899
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
900
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
901
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
583
902
|
}
|
|
584
903
|
}
|
|
585
904
|
}
|
|
@@ -630,9 +949,38 @@ var tr_default = {
|
|
|
630
949
|
signing: {
|
|
631
950
|
errors: {
|
|
632
951
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
633
|
-
}
|
|
952
|
+
}
|
|
953
|
+
},
|
|
954
|
+
dotnet: {
|
|
634
955
|
info: {
|
|
635
|
-
|
|
956
|
+
available: "dotnet CLI is available (version {version})."
|
|
957
|
+
},
|
|
958
|
+
warnings: {
|
|
959
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
publish: {
|
|
963
|
+
errors: {
|
|
964
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
965
|
+
packageNotFound: "Package file not found: {path}",
|
|
966
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
967
|
+
publishFailed: "Publish failed: {message}",
|
|
968
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
969
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
970
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
971
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
972
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
973
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
974
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
975
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
976
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
977
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
978
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
979
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
980
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
981
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
982
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
983
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
636
984
|
}
|
|
637
985
|
}
|
|
638
986
|
}
|
|
@@ -683,9 +1031,38 @@ var zh_CN_default = {
|
|
|
683
1031
|
signing: {
|
|
684
1032
|
errors: {
|
|
685
1033
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
686
|
-
}
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
dotnet: {
|
|
687
1037
|
info: {
|
|
688
|
-
|
|
1038
|
+
available: "dotnet CLI is available (version {version})."
|
|
1039
|
+
},
|
|
1040
|
+
warnings: {
|
|
1041
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
1042
|
+
}
|
|
1043
|
+
},
|
|
1044
|
+
publish: {
|
|
1045
|
+
errors: {
|
|
1046
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
1047
|
+
packageNotFound: "Package file not found: {path}",
|
|
1048
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
1049
|
+
publishFailed: "Publish failed: {message}",
|
|
1050
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
1051
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
1052
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
1053
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
1054
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
1055
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
1056
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
1057
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
1058
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
1059
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
1060
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
1061
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
1062
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
1063
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
1064
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
1065
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
689
1066
|
}
|
|
690
1067
|
}
|
|
691
1068
|
}
|
|
@@ -736,9 +1113,38 @@ var zh_TW_default = {
|
|
|
736
1113
|
signing: {
|
|
737
1114
|
errors: {
|
|
738
1115
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
739
|
-
}
|
|
1116
|
+
}
|
|
1117
|
+
},
|
|
1118
|
+
dotnet: {
|
|
740
1119
|
info: {
|
|
741
|
-
|
|
1120
|
+
available: "dotnet CLI is available (version {version})."
|
|
1121
|
+
},
|
|
1122
|
+
warnings: {
|
|
1123
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
1124
|
+
}
|
|
1125
|
+
},
|
|
1126
|
+
publish: {
|
|
1127
|
+
errors: {
|
|
1128
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
1129
|
+
packageNotFound: "Package file not found: {path}",
|
|
1130
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
1131
|
+
publishFailed: "Publish failed: {message}",
|
|
1132
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
1133
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
1134
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
1135
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
1136
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
1137
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
1138
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
1139
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
1140
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
1141
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
1142
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
1143
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
1144
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
1145
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
1146
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
1147
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
742
1148
|
}
|
|
743
1149
|
}
|
|
744
1150
|
}
|
|
@@ -789,9 +1195,38 @@ var zu_default = {
|
|
|
789
1195
|
signing: {
|
|
790
1196
|
errors: {
|
|
791
1197
|
dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
|
|
792
|
-
}
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1200
|
+
dotnet: {
|
|
793
1201
|
info: {
|
|
794
|
-
|
|
1202
|
+
available: "dotnet CLI is available (version {version})."
|
|
1203
|
+
},
|
|
1204
|
+
warnings: {
|
|
1205
|
+
notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
|
|
1206
|
+
}
|
|
1207
|
+
},
|
|
1208
|
+
publish: {
|
|
1209
|
+
errors: {
|
|
1210
|
+
atLeastOnePackage: "At least one package path is required.",
|
|
1211
|
+
packageNotFound: "Package file not found: {path}",
|
|
1212
|
+
unknownDestination: "Unknown publish destination: {destination}",
|
|
1213
|
+
publishFailed: "Publish failed: {message}",
|
|
1214
|
+
failedToReadPackage: "Failed to read package file: {path}",
|
|
1215
|
+
localFolderRequired: "Local folder destination requires a folderPath.",
|
|
1216
|
+
localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
|
|
1217
|
+
nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
|
|
1218
|
+
nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
|
|
1219
|
+
nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
|
|
1220
|
+
orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
|
|
1221
|
+
orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
|
|
1222
|
+
orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
|
|
1223
|
+
orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
|
|
1224
|
+
orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
|
|
1225
|
+
orchestratorNoPackages: "No package files were provided to publish.",
|
|
1226
|
+
orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
|
|
1227
|
+
orchestratorUrlRequired: "Orchestrator URL is required.",
|
|
1228
|
+
getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
|
|
1229
|
+
getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
|
|
795
1230
|
}
|
|
796
1231
|
}
|
|
797
1232
|
}
|
|
@@ -816,20 +1251,20 @@ I18nManager.registerTranslations("zu", zu_default);
|
|
|
816
1251
|
|
|
817
1252
|
// src/node.ts
|
|
818
1253
|
import {
|
|
819
|
-
|
|
1254
|
+
DebugTelemetryProvider as DebugTelemetryProvider2,
|
|
820
1255
|
NodeContextStorage as NodeContextStorage2,
|
|
821
1256
|
TelemetryService as TelemetryService2
|
|
822
|
-
} from "@uipath/
|
|
1257
|
+
} from "@uipath/common";
|
|
1258
|
+
import { ConsoleTelemetryProvider } from "@uipath/common/telemetry";
|
|
823
1259
|
|
|
824
1260
|
// src/base-node-packager-factory.ts
|
|
825
|
-
import { execSync } from "node:child_process";
|
|
826
|
-
import { NodeFileSystem } from "@uipath/filesystem";
|
|
827
|
-
import { translate } from "@uipath/solutionpackager-tool-core";
|
|
828
1261
|
import {
|
|
829
|
-
|
|
1262
|
+
DebugTelemetryProvider,
|
|
830
1263
|
NodeContextStorage,
|
|
831
1264
|
TelemetryService
|
|
832
|
-
} from "@uipath/
|
|
1265
|
+
} from "@uipath/common";
|
|
1266
|
+
import { NodeFileSystem } from "@uipath/filesystem";
|
|
1267
|
+
import { translate } from "@uipath/solutionpackager-tool-core";
|
|
833
1268
|
|
|
834
1269
|
// src/services/tool-logger.ts
|
|
835
1270
|
import {
|
|
@@ -919,6 +1354,7 @@ class ToolLogger {
|
|
|
919
1354
|
|
|
920
1355
|
// src/base-node-packager-factory.ts
|
|
921
1356
|
class BaseNodePackagerFactory {
|
|
1357
|
+
dotnetDiscovery;
|
|
922
1358
|
getOrCreateFileSystem(config) {
|
|
923
1359
|
return config?.fileSystem ?? new NodeFileSystem;
|
|
924
1360
|
}
|
|
@@ -926,19 +1362,21 @@ class BaseNodePackagerFactory {
|
|
|
926
1362
|
if (config?.telemetryService) {
|
|
927
1363
|
return config.telemetryService;
|
|
928
1364
|
}
|
|
929
|
-
const provider = new
|
|
1365
|
+
const provider = new DebugTelemetryProvider;
|
|
930
1366
|
const contextStorage = new NodeContextStorage;
|
|
931
1367
|
return new TelemetryService(provider, contextStorage);
|
|
932
1368
|
}
|
|
933
1369
|
checkDotnetAvailability(logger) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
logger.info("dotnet
|
|
940
|
-
|
|
941
|
-
|
|
1370
|
+
if (!this.dotnetDiscovery) {
|
|
1371
|
+
return;
|
|
1372
|
+
}
|
|
1373
|
+
const version = this.dotnetDiscovery.getDotnetVersion();
|
|
1374
|
+
if (version) {
|
|
1375
|
+
logger.info(translate.t("solutionpackager.dotnet.info.available", {
|
|
1376
|
+
version
|
|
1377
|
+
}));
|
|
1378
|
+
} else {
|
|
1379
|
+
logger.warn(translate.t("solutionpackager.dotnet.warnings.notAvailable"));
|
|
942
1380
|
}
|
|
943
1381
|
}
|
|
944
1382
|
configureLogHandler(config) {
|
|
@@ -964,6 +1402,7 @@ var RulesConfigFileType;
|
|
|
964
1402
|
|
|
965
1403
|
class PackagerParameters {
|
|
966
1404
|
inputPath;
|
|
1405
|
+
downloadUrl;
|
|
967
1406
|
logLevel = LogLevel2.Warn;
|
|
968
1407
|
outputPath;
|
|
969
1408
|
targetFramework;
|
|
@@ -981,12 +1420,14 @@ class ProjectRestoreOptions extends PackagerParameters {
|
|
|
981
1420
|
class ProjectValidateOptions extends ProjectRestoreOptions {
|
|
982
1421
|
validateOptions = {
|
|
983
1422
|
skipAnalyze: false,
|
|
1423
|
+
skipValidate: false,
|
|
984
1424
|
governanceFileType: "Default" /* Default */
|
|
985
1425
|
};
|
|
986
1426
|
}
|
|
987
1427
|
|
|
988
1428
|
// src/models/project-build-options.ts
|
|
989
1429
|
class ProjectBuildOptions extends ProjectValidateOptions {
|
|
1430
|
+
outputType;
|
|
990
1431
|
}
|
|
991
1432
|
// src/models/project-pack-options.ts
|
|
992
1433
|
class ProjectPackOptions extends ProjectBuildOptions {
|
|
@@ -995,8 +1436,33 @@ class ProjectPackOptions extends ProjectBuildOptions {
|
|
|
995
1436
|
signingInfo;
|
|
996
1437
|
packOptions;
|
|
997
1438
|
}
|
|
1439
|
+
// src/services/dotnet-discovery-service.ts
|
|
1440
|
+
import { execSync } from "node:child_process";
|
|
1441
|
+
|
|
1442
|
+
class DotnetDiscoveryService {
|
|
1443
|
+
cachedVersion;
|
|
1444
|
+
isDotnetAvailable() {
|
|
1445
|
+
return this.getDotnetVersion() !== undefined;
|
|
1446
|
+
}
|
|
1447
|
+
getDotnetVersion() {
|
|
1448
|
+
if (this.cachedVersion !== undefined) {
|
|
1449
|
+
return this.cachedVersion;
|
|
1450
|
+
}
|
|
1451
|
+
try {
|
|
1452
|
+
const output = execSync("dotnet --version", {
|
|
1453
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
1454
|
+
encoding: "utf-8"
|
|
1455
|
+
});
|
|
1456
|
+
this.cachedVersion = output.trim();
|
|
1457
|
+
return this.cachedVersion;
|
|
1458
|
+
} catch {
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
|
|
998
1464
|
// src/services/package-sign-service.ts
|
|
999
|
-
import {
|
|
1465
|
+
import { spawn } from "node:child_process";
|
|
1000
1466
|
import {
|
|
1001
1467
|
ToolErrorCodes,
|
|
1002
1468
|
ToolResult,
|
|
@@ -1004,13 +1470,14 @@ import {
|
|
|
1004
1470
|
} from "@uipath/solutionpackager-tool-core";
|
|
1005
1471
|
|
|
1006
1472
|
class NodePackageSignService {
|
|
1473
|
+
dotnetDiscovery;
|
|
1007
1474
|
logger;
|
|
1008
|
-
constructor(logger) {
|
|
1475
|
+
constructor(dotnetDiscovery, logger) {
|
|
1476
|
+
this.dotnetDiscovery = dotnetDiscovery;
|
|
1009
1477
|
this.logger = logger;
|
|
1010
1478
|
}
|
|
1011
1479
|
async signPackageAsync(packagePath, certificatePath, certificatePassword, timestampServer) {
|
|
1012
|
-
if (!this.
|
|
1013
|
-
this.logger.error(translate2.t("solutionpackager.signing.info.dotnetNotAvailable"));
|
|
1480
|
+
if (!this.dotnetDiscovery.isDotnetAvailable()) {
|
|
1014
1481
|
return ToolResult.error(ToolErrorCodes.InternalError, translate2.t("solutionpackager.signing.errors.dotnetNotAvailable"));
|
|
1015
1482
|
}
|
|
1016
1483
|
const args = [
|
|
@@ -1056,18 +1523,6 @@ class NodePackageSignService {
|
|
|
1056
1523
|
});
|
|
1057
1524
|
});
|
|
1058
1525
|
}
|
|
1059
|
-
checkAvailable() {
|
|
1060
|
-
try {
|
|
1061
|
-
const output = execSync2("dotnet nuget --version", {
|
|
1062
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
1063
|
-
encoding: "utf-8"
|
|
1064
|
-
});
|
|
1065
|
-
this.logger.info(`dotnet CLI found, version ${output.trim()}`);
|
|
1066
|
-
return true;
|
|
1067
|
-
} catch {
|
|
1068
|
-
return false;
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
1526
|
}
|
|
1072
1527
|
|
|
1073
1528
|
// src/services/project-packager.ts
|
|
@@ -1075,6 +1530,7 @@ import {
|
|
|
1075
1530
|
toolsFactoryRepository as defaultToolsFactoryRepository,
|
|
1076
1531
|
NugetPackager,
|
|
1077
1532
|
Path as Path3,
|
|
1533
|
+
TargetFramework,
|
|
1078
1534
|
TemporaryStorageService,
|
|
1079
1535
|
ToolErrorCodes as ToolErrorCodes4,
|
|
1080
1536
|
ToolResult as ToolResult4,
|
|
@@ -1099,7 +1555,6 @@ var TelemetryNames;
|
|
|
1099
1555
|
// src/services/governance-policy-service.ts
|
|
1100
1556
|
import {
|
|
1101
1557
|
Path,
|
|
1102
|
-
toRelativeUrl,
|
|
1103
1558
|
translate as translate3
|
|
1104
1559
|
} from "@uipath/solutionpackager-tool-core";
|
|
1105
1560
|
var LICENSE_TYPES = {
|
|
@@ -1136,7 +1591,7 @@ class GovernancePolicyService {
|
|
|
1136
1591
|
this.logger.info(t("info.alreadyProvided"));
|
|
1137
1592
|
return;
|
|
1138
1593
|
}
|
|
1139
|
-
|
|
1594
|
+
let cloudUrl = connectionInfo?.cloudUrl;
|
|
1140
1595
|
const organizationId = connectionInfo?.organizationId;
|
|
1141
1596
|
const tenantId = connectionInfo?.tenantId;
|
|
1142
1597
|
const accessToken = connectionInfo?.accessToken;
|
|
@@ -1146,9 +1601,17 @@ class GovernancePolicyService {
|
|
|
1146
1601
|
return;
|
|
1147
1602
|
}
|
|
1148
1603
|
const profileKey = validateOptions.profileKey ?? DEFAULT_PROFILE_KEY;
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1604
|
+
let cloudOrigin;
|
|
1605
|
+
try {
|
|
1606
|
+
cloudOrigin = new URL(cloudUrl).origin;
|
|
1607
|
+
cloudUrl = cloudUrl.replace(/\/+$/, "");
|
|
1608
|
+
} catch {
|
|
1609
|
+
this.logger.warn(t("errors.connectionIncomplete"));
|
|
1610
|
+
validateOptions.governanceFileType = "Default" /* Default */;
|
|
1611
|
+
return;
|
|
1612
|
+
}
|
|
1613
|
+
const licenseType = await this.resolveLicenseTypeAsync(profileKey, cloudUrl, accessToken, cancellationToken);
|
|
1614
|
+
const policy = await this.downloadPolicyAsync(cloudOrigin, organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken);
|
|
1152
1615
|
if (!policy) {
|
|
1153
1616
|
validateOptions.governanceFileType = "Default" /* Default */;
|
|
1154
1617
|
return;
|
|
@@ -1166,8 +1629,8 @@ class GovernancePolicyService {
|
|
|
1166
1629
|
validateOptions.governanceFileType = "Default" /* Default */;
|
|
1167
1630
|
}
|
|
1168
1631
|
}
|
|
1169
|
-
async downloadPolicyAsync(organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken) {
|
|
1170
|
-
const policyUrl =
|
|
1632
|
+
async downloadPolicyAsync(cloudOrigin, organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken) {
|
|
1633
|
+
const policyUrl = `${cloudOrigin}/${organizationId}/roboticsops_` + `/api/Policy/license/${licenseType}/product/${profileKey}/tenant/${tenantId}`;
|
|
1171
1634
|
this.logger.info(t("info.downloading", { url: policyUrl }));
|
|
1172
1635
|
try {
|
|
1173
1636
|
const response = await this.fetchFn(policyUrl, {
|
|
@@ -1199,11 +1662,11 @@ class GovernancePolicyService {
|
|
|
1199
1662
|
return null;
|
|
1200
1663
|
}
|
|
1201
1664
|
}
|
|
1202
|
-
async resolveLicenseTypeAsync(profileKey,
|
|
1665
|
+
async resolveLicenseTypeAsync(profileKey, cloudUrl, accessToken, cancellationToken) {
|
|
1203
1666
|
const isStudioWeb = profileKey === DEFAULT_PROFILE_KEY;
|
|
1204
1667
|
const fallback = isStudioWeb ? LICENSE_TYPES.NoLicense : LICENSE_TYPES.Development;
|
|
1205
1668
|
try {
|
|
1206
|
-
const response = await this.fetchFn(`${
|
|
1669
|
+
const response = await this.fetchFn(`${cloudUrl}${ACQUIRE_LICENSE_PATH}`, {
|
|
1207
1670
|
method: "POST",
|
|
1208
1671
|
headers: { Authorization: `Bearer ${accessToken}` },
|
|
1209
1672
|
signal: cancellationToken
|
|
@@ -1239,7 +1702,7 @@ class GovernancePolicyService {
|
|
|
1239
1702
|
|
|
1240
1703
|
// src/services/pack-service.ts
|
|
1241
1704
|
class PackService {
|
|
1242
|
-
disallowedCharsRegex = /[^\
|
|
1705
|
+
disallowedCharsRegex = /[^\p{L}\p{N}_.-]/gu;
|
|
1243
1706
|
spacesDotRegex = /[\s.]+/g;
|
|
1244
1707
|
dotDashRegex = /\.{0,10}[-:]\.{0,10}/g;
|
|
1245
1708
|
MaxPackageIdLength = 100;
|
|
@@ -1328,13 +1791,13 @@ class ProjectBuildOptionsValidator extends PackagerParametersValidator {
|
|
|
1328
1791
|
// src/services/project-loader.ts
|
|
1329
1792
|
import {
|
|
1330
1793
|
Path as Path2,
|
|
1794
|
+
ProjectTool,
|
|
1331
1795
|
ProjectTypes,
|
|
1332
1796
|
translate as translate5
|
|
1333
1797
|
} from "@uipath/solutionpackager-tool-core";
|
|
1334
1798
|
|
|
1335
1799
|
class ProjectLoader {
|
|
1336
1800
|
fileSystem;
|
|
1337
|
-
static ProjectFileName = "project.uiproj";
|
|
1338
1801
|
static WebAppManifestFileName = "webAppManifest.json";
|
|
1339
1802
|
constructor(fileSystem) {
|
|
1340
1803
|
this.fileSystem = fileSystem;
|
|
@@ -1343,7 +1806,7 @@ class ProjectLoader {
|
|
|
1343
1806
|
if (!projectPath) {
|
|
1344
1807
|
throw new Error(translate5.t("solutionpackager.projectLoader.errors.pathRequired"));
|
|
1345
1808
|
}
|
|
1346
|
-
const projectFilePath = Path2.join(projectPath,
|
|
1809
|
+
const projectFilePath = Path2.join(projectPath, ProjectTool.ProjectFileName);
|
|
1347
1810
|
const projectFileExists = await this.fileSystem.exists(projectFilePath);
|
|
1348
1811
|
if (projectFileExists) {
|
|
1349
1812
|
return await this.loadFromProjectFile(projectPath, projectFilePath);
|
|
@@ -1354,7 +1817,7 @@ class ProjectLoader {
|
|
|
1354
1817
|
return this.loadFromWebAppManifest(projectPath, webAppManifestPath);
|
|
1355
1818
|
}
|
|
1356
1819
|
throw new Error(translate5.t("solutionpackager.projectLoader.errors.noProjectFile", {
|
|
1357
|
-
projectFile:
|
|
1820
|
+
projectFile: ProjectTool.ProjectFileName,
|
|
1358
1821
|
manifestFile: ProjectLoader.WebAppManifestFileName,
|
|
1359
1822
|
path: projectPath
|
|
1360
1823
|
}));
|
|
@@ -1416,12 +1879,12 @@ class ProjectPackOptionsBuilder {
|
|
|
1416
1879
|
nuGetSourcesConfigPath: parameters.nuGetSourcesConfigPath,
|
|
1417
1880
|
logLevel: parameters.logLevel,
|
|
1418
1881
|
skipAnalyze: parameters.validateOptions.skipAnalyze,
|
|
1419
|
-
skipValidate:
|
|
1882
|
+
skipValidate: parameters.validateOptions.skipValidate,
|
|
1420
1883
|
detailedLogPath: parameters.detailedLogPath,
|
|
1421
1884
|
policyFilePath: parameters.validateOptions.governanceFilePath,
|
|
1422
1885
|
policyFileType: parameters.validateOptions.governanceFileType,
|
|
1423
1886
|
outputPath: parameters.outputPath,
|
|
1424
|
-
outputType:
|
|
1887
|
+
outputType: parameters.outputType,
|
|
1425
1888
|
projectType: project.type,
|
|
1426
1889
|
package: packageInfo,
|
|
1427
1890
|
skipDependencyOptimization: parameters.packOptions?.skipDependencyOptimization ?? false,
|
|
@@ -1595,10 +2058,6 @@ class ProjectPackager {
|
|
|
1595
2058
|
this.projectLoader = new ProjectLoader(this.fileSystem);
|
|
1596
2059
|
this.governancePolicyService = new GovernancePolicyService(this.fileSystem, this.temporaryStorage);
|
|
1597
2060
|
}
|
|
1598
|
-
async canPackProjectAsync(projectPath) {
|
|
1599
|
-
const project = await this.projectLoader.loadProject(projectPath);
|
|
1600
|
-
return this.repository.canHandleProject(project.type);
|
|
1601
|
-
}
|
|
1602
2061
|
async setupAsync(input, operationId) {
|
|
1603
2062
|
this.telemetryService.setOperationId(operationId);
|
|
1604
2063
|
await this.temporaryStorage.cleanup();
|
|
@@ -1642,12 +2101,14 @@ class ProjectPackager {
|
|
|
1642
2101
|
nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,
|
|
1643
2102
|
logLevel: options.logLevel,
|
|
1644
2103
|
skipAnalyze: options.validateOptions.skipAnalyze,
|
|
2104
|
+
skipValidate: options.validateOptions.skipValidate,
|
|
1645
2105
|
defaultSeverity: options.validateOptions.defaultSeverity,
|
|
1646
2106
|
detailedLogPath: options.detailedLogPath,
|
|
1647
2107
|
policyFilePath: options.validateOptions.governanceFilePath,
|
|
1648
2108
|
policyFileType: options.validateOptions.governanceFileType
|
|
1649
2109
|
};
|
|
1650
|
-
|
|
2110
|
+
const context = this.createOperationContext(options, uiPathProject);
|
|
2111
|
+
return await this.projectExecutor.validateAsync(validateOptions, uiPathProject, context, cancellationToken);
|
|
1651
2112
|
}, cancellationToken);
|
|
1652
2113
|
}
|
|
1653
2114
|
async buildProjectAsync(options, cancellationToken) {
|
|
@@ -1666,12 +2127,12 @@ class ProjectPackager {
|
|
|
1666
2127
|
nuGetSourcesConfigPath: options.nuGetSourcesConfigPath,
|
|
1667
2128
|
logLevel: options.logLevel,
|
|
1668
2129
|
skipAnalyze: options.validateOptions.skipAnalyze,
|
|
1669
|
-
skipValidate:
|
|
2130
|
+
skipValidate: options.validateOptions.skipValidate,
|
|
1670
2131
|
detailedLogPath: options.detailedLogPath,
|
|
1671
2132
|
policyFilePath: options.validateOptions.governanceFilePath,
|
|
1672
2133
|
policyFileType: options.validateOptions.governanceFileType,
|
|
1673
2134
|
outputPath: options.outputPath,
|
|
1674
|
-
outputType:
|
|
2135
|
+
outputType: options.outputType,
|
|
1675
2136
|
projectType: uiPathProject.Type
|
|
1676
2137
|
};
|
|
1677
2138
|
return await this.projectExecutor.buildAsync(buildOptions, uiPathProject, undefined, cancellationToken);
|
|
@@ -1697,7 +2158,8 @@ class ProjectPackager {
|
|
|
1697
2158
|
ProjectPath: loadedProject.projectPath,
|
|
1698
2159
|
Id: loadedProject.name
|
|
1699
2160
|
};
|
|
1700
|
-
|
|
2161
|
+
const context = this.createOperationContext(options, uiPathProject);
|
|
2162
|
+
result = await this.projectExecutor.packAsync(projectPackOptions, uiPathProject, context, options.signingInfo, cancellationToken);
|
|
1701
2163
|
if (result.isSuccess && result.packages.length > 0) {
|
|
1702
2164
|
const destinationPackages = await this.copyPackagesToDestination(result.packages, options.destinationPath, projectPackOptions.package);
|
|
1703
2165
|
result = new ToolResult4(ToolErrorCodes4.Success, undefined, destinationPackages);
|
|
@@ -1766,6 +2228,34 @@ class ProjectPackager {
|
|
|
1766
2228
|
}
|
|
1767
2229
|
});
|
|
1768
2230
|
}
|
|
2231
|
+
createOperationContext(options, uiPathProject) {
|
|
2232
|
+
return {
|
|
2233
|
+
id: crypto.randomUUID(),
|
|
2234
|
+
projects: [uiPathProject],
|
|
2235
|
+
downloadUrl: options.downloadUrl,
|
|
2236
|
+
targetFramework: options.targetFramework ?? TargetFramework.Portable,
|
|
2237
|
+
connection: options.connection,
|
|
2238
|
+
logger: this.logger,
|
|
2239
|
+
workflowCompilerVersion: options.workflowCompilerVersion
|
|
2240
|
+
};
|
|
2241
|
+
}
|
|
2242
|
+
async findNupkgInParentDir(packagePath) {
|
|
2243
|
+
const dirName = Path3.basename(packagePath);
|
|
2244
|
+
const parentDir = Path3.dirname(packagePath);
|
|
2245
|
+
const parentFiles = await this.fileSystem.readdir(parentDir);
|
|
2246
|
+
const matchingFiles = parentFiles.filter((f) => f.endsWith(".nupkg") && f.startsWith(`${dirName}.`));
|
|
2247
|
+
return { dir: parentDir, files: matchingFiles };
|
|
2248
|
+
}
|
|
2249
|
+
async copyFileToDestination(sourcePath, destinationPath) {
|
|
2250
|
+
const fileName = Path3.basename(sourcePath);
|
|
2251
|
+
const destPath = Path3.join(destinationPath, fileName);
|
|
2252
|
+
const data = await this.fileSystem.readFile(sourcePath);
|
|
2253
|
+
if (!data) {
|
|
2254
|
+
throw new Error(translate6.t("solutionpackager.packager.errors.failedToReadPackage", { path: sourcePath }));
|
|
2255
|
+
}
|
|
2256
|
+
await this.fileSystem.writeFile(destPath, data);
|
|
2257
|
+
return destPath;
|
|
2258
|
+
}
|
|
1769
2259
|
async copyPackagesToDestination(packagePaths, destinationPath, packageInfo) {
|
|
1770
2260
|
await this.fileSystem.mkdir(destinationPath);
|
|
1771
2261
|
const destinationPackages = [];
|
|
@@ -1777,33 +2267,27 @@ class ProjectPackager {
|
|
|
1777
2267
|
if (nupkgFiles.length > 0) {
|
|
1778
2268
|
for (const nupkgFile of nupkgFiles) {
|
|
1779
2269
|
const filePath = Path3.join(packagePath, nupkgFile);
|
|
1780
|
-
const
|
|
1781
|
-
|
|
1782
|
-
if (!data) {
|
|
1783
|
-
throw new Error(translate6.t("solutionpackager.packager.errors.failedToReadPackage", {
|
|
1784
|
-
path: filePath
|
|
1785
|
-
}));
|
|
1786
|
-
}
|
|
1787
|
-
await this.fileSystem.writeFile(destPath, data);
|
|
1788
|
-
destinationPackages.push(destPath);
|
|
2270
|
+
const dest = await this.copyFileToDestination(filePath, destinationPath);
|
|
2271
|
+
destinationPackages.push(dest);
|
|
1789
2272
|
}
|
|
1790
2273
|
} else {
|
|
1791
|
-
const
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
2274
|
+
const parent = await this.findNupkgInParentDir(packagePath);
|
|
2275
|
+
if (parent.files.length > 0) {
|
|
2276
|
+
for (const nupkgFile of parent.files) {
|
|
2277
|
+
const filePath = Path3.join(parent.dir, nupkgFile);
|
|
2278
|
+
const dest = await this.copyFileToDestination(filePath, destinationPath);
|
|
2279
|
+
destinationPackages.push(dest);
|
|
2280
|
+
}
|
|
2281
|
+
} else {
|
|
2282
|
+
const nupkgFileName = `${packageInfo.id}.${packageInfo.version}.nupkg`;
|
|
2283
|
+
const destPath = Path3.join(destinationPath, nupkgFileName);
|
|
2284
|
+
const packResult = await this.nugetPackager.packAsync(packagePath, packageInfo, destPath);
|
|
2285
|
+
destinationPackages.push(packResult.outputPath);
|
|
2286
|
+
}
|
|
1795
2287
|
}
|
|
1796
2288
|
} else {
|
|
1797
|
-
const
|
|
1798
|
-
|
|
1799
|
-
const data = await this.fileSystem.readFile(packagePath);
|
|
1800
|
-
if (!data) {
|
|
1801
|
-
throw new Error(translate6.t("solutionpackager.packager.errors.failedToReadPackage", {
|
|
1802
|
-
path: packagePath
|
|
1803
|
-
}));
|
|
1804
|
-
}
|
|
1805
|
-
await this.fileSystem.writeFile(destPath, data);
|
|
1806
|
-
destinationPackages.push(destPath);
|
|
2289
|
+
const dest = await this.copyFileToDestination(packagePath, destinationPath);
|
|
2290
|
+
destinationPackages.push(dest);
|
|
1807
2291
|
}
|
|
1808
2292
|
}
|
|
1809
2293
|
return destinationPackages;
|
|
@@ -1819,7 +2303,8 @@ class NodeProjectPackagerFactory extends BaseNodePackagerFactory {
|
|
|
1819
2303
|
logger.info("Creating ProjectPackager instance...");
|
|
1820
2304
|
const fileSystem = this.getOrCreateFileSystem(config);
|
|
1821
2305
|
const telemetryService = this.getOrCreateTelemetryService(config);
|
|
1822
|
-
|
|
2306
|
+
this.dotnetDiscovery = new DotnetDiscoveryService;
|
|
2307
|
+
const packageSignService = new NodePackageSignService(this.dotnetDiscovery, logger);
|
|
1823
2308
|
const projectPackager = new ProjectPackager(fileSystem, telemetryService, packageSignService);
|
|
1824
2309
|
this.checkDotnetAvailability(logger);
|
|
1825
2310
|
logger.info("ProjectPackager created successfully.");
|
|
@@ -1830,18 +2315,645 @@ async function createNodeProjectPackager(options) {
|
|
|
1830
2315
|
const factory = new NodeProjectPackagerFactory;
|
|
1831
2316
|
return factory.createAsync(options);
|
|
1832
2317
|
}
|
|
2318
|
+
// src/publish/models/publish-options.ts
|
|
2319
|
+
var PublishDestinationKind;
|
|
2320
|
+
((PublishDestinationKind2) => {
|
|
2321
|
+
PublishDestinationKind2["LocalFolder"] = "LocalFolder";
|
|
2322
|
+
PublishDestinationKind2["NugetFeed"] = "NugetFeed";
|
|
2323
|
+
PublishDestinationKind2["OrchestratorPersonalWorkspace"] = "OrchestratorPersonalWorkspace";
|
|
2324
|
+
PublishDestinationKind2["OrchestratorTenantProcesses"] = "OrchestratorTenantProcesses";
|
|
2325
|
+
PublishDestinationKind2["OrchestratorSharedLibraries"] = "OrchestratorSharedLibraries";
|
|
2326
|
+
PublishDestinationKind2["OrchestratorCustom"] = "OrchestratorCustom";
|
|
2327
|
+
})(PublishDestinationKind ||= {});
|
|
2328
|
+
|
|
2329
|
+
class ProjectPublishOptions {
|
|
2330
|
+
packagePaths;
|
|
2331
|
+
destination;
|
|
2332
|
+
constructor(packagePaths, destination) {
|
|
2333
|
+
this.packagePaths = packagePaths;
|
|
2334
|
+
this.destination = destination;
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2337
|
+
// src/publish/services/project-publisher.ts
|
|
2338
|
+
import {
|
|
2339
|
+
ToolErrorCodes as ToolErrorCodes8,
|
|
2340
|
+
ToolResult as ToolResult8,
|
|
2341
|
+
translate as translate11
|
|
2342
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
2343
|
+
|
|
2344
|
+
// src/publish/services/local-folder-publisher.ts
|
|
2345
|
+
import {
|
|
2346
|
+
ToolErrorCodes as ToolErrorCodes5,
|
|
2347
|
+
ToolResult as ToolResult5,
|
|
2348
|
+
translate as translate7
|
|
2349
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
2350
|
+
class LocalFolderPublisher {
|
|
2351
|
+
fileSystem;
|
|
2352
|
+
logger;
|
|
2353
|
+
constructor(fileSystem) {
|
|
2354
|
+
this.fileSystem = fileSystem;
|
|
2355
|
+
this.logger = new ToolLogger("ProjectPublisher", "LocalFolder");
|
|
2356
|
+
}
|
|
2357
|
+
async publishAsync(packagePaths, destination) {
|
|
2358
|
+
const overwrite = destination.overwrite ?? true;
|
|
2359
|
+
if (!destination.folderPath) {
|
|
2360
|
+
return ToolResult5.error(ToolErrorCodes5.InternalError, translate7.t("solutionpackager.publish.errors.localFolderRequired"));
|
|
2361
|
+
}
|
|
2362
|
+
if (!await this.fileSystem.exists(destination.folderPath)) {
|
|
2363
|
+
await this.fileSystem.mkdir(destination.folderPath);
|
|
2364
|
+
}
|
|
2365
|
+
const written = [];
|
|
2366
|
+
for (const sourcePath of packagePaths) {
|
|
2367
|
+
const fileName = this.fileSystem.path.basename(sourcePath);
|
|
2368
|
+
const destPath = this.fileSystem.path.join(destination.folderPath, fileName);
|
|
2369
|
+
if (!overwrite && await this.fileSystem.exists(destPath)) {
|
|
2370
|
+
return ToolResult5.error(ToolErrorCodes5.InternalError, translate7.t("solutionpackager.publish.errors.localFolderFileExists", { path: destPath }));
|
|
2371
|
+
}
|
|
2372
|
+
const data = await this.fileSystem.readFile(sourcePath);
|
|
2373
|
+
if (!data) {
|
|
2374
|
+
return ToolResult5.error(ToolErrorCodes5.InternalError, translate7.t("solutionpackager.publish.errors.failedToReadPackage", { path: sourcePath }));
|
|
2375
|
+
}
|
|
2376
|
+
await this.fileSystem.writeFile(destPath, data);
|
|
2377
|
+
written.push(destPath);
|
|
2378
|
+
this.logger.info(`Copied package to ${destPath}`);
|
|
2379
|
+
}
|
|
2380
|
+
return new ToolResult5(ToolErrorCodes5.Success, undefined, written);
|
|
2381
|
+
}
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
// src/publish/services/nuget-feed-publisher.ts
|
|
2385
|
+
import {
|
|
2386
|
+
ToolErrorCodes as ToolErrorCodes6,
|
|
2387
|
+
ToolResult as ToolResult6,
|
|
2388
|
+
translate as translate8
|
|
2389
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
2390
|
+
var NUGET_V3_PACKAGE_PUBLISH_TYPE = "PackagePublish/2.0.0";
|
|
2391
|
+
|
|
2392
|
+
class NugetFeedPublisher {
|
|
2393
|
+
fileSystem;
|
|
2394
|
+
logger;
|
|
2395
|
+
constructor(fileSystem) {
|
|
2396
|
+
this.fileSystem = fileSystem;
|
|
2397
|
+
this.logger = new ToolLogger("ProjectPublisher", "NugetFeed");
|
|
2398
|
+
}
|
|
2399
|
+
async publishAsync(packagePaths, destination) {
|
|
2400
|
+
if (!destination.feedUrl) {
|
|
2401
|
+
return ToolResult6.error(ToolErrorCodes6.InternalError, translate8.t("solutionpackager.publish.errors.nugetFeedUrlRequired"));
|
|
2402
|
+
}
|
|
2403
|
+
let pushUrl;
|
|
2404
|
+
try {
|
|
2405
|
+
pushUrl = await this.resolvePushUrl(destination.feedUrl, destination.apiKey);
|
|
2406
|
+
} catch (error) {
|
|
2407
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
2408
|
+
return ToolResult6.error(ToolErrorCodes6.InternalError, translate8.t("solutionpackager.publish.errors.nugetPushUrlResolutionFailed", { feedUrl: destination.feedUrl, message }));
|
|
2409
|
+
}
|
|
2410
|
+
const published = [];
|
|
2411
|
+
for (const packagePath of packagePaths) {
|
|
2412
|
+
const data = await this.fileSystem.readFile(packagePath);
|
|
2413
|
+
if (!data) {
|
|
2414
|
+
return ToolResult6.error(ToolErrorCodes6.InternalError, translate8.t("solutionpackager.publish.errors.failedToReadPackage", { path: packagePath }));
|
|
2415
|
+
}
|
|
2416
|
+
const fileName = this.fileSystem.path.basename(packagePath);
|
|
2417
|
+
const form = new FormData;
|
|
2418
|
+
form.append("package", new Blob([data], {
|
|
2419
|
+
type: "application/octet-stream"
|
|
2420
|
+
}), fileName);
|
|
2421
|
+
const headers = {};
|
|
2422
|
+
if (destination.apiKey) {
|
|
2423
|
+
headers["X-NuGet-ApiKey"] = destination.apiKey;
|
|
2424
|
+
}
|
|
2425
|
+
this.logger.info(`Pushing ${fileName} to ${pushUrl}`);
|
|
2426
|
+
const response = await fetch(pushUrl, {
|
|
2427
|
+
method: "PUT",
|
|
2428
|
+
headers,
|
|
2429
|
+
body: form
|
|
2430
|
+
});
|
|
2431
|
+
if (!response.ok) {
|
|
2432
|
+
const body = await this.safeReadBody(response);
|
|
2433
|
+
return ToolResult6.error(ToolErrorCodes6.InternalError, translate8.t("solutionpackager.publish.errors.nugetPushFailed", {
|
|
2434
|
+
fileName,
|
|
2435
|
+
status: response.status,
|
|
2436
|
+
statusText: response.statusText,
|
|
2437
|
+
body: body ? ` - ${body}` : ""
|
|
2438
|
+
}));
|
|
2439
|
+
}
|
|
2440
|
+
published.push(packagePath);
|
|
2441
|
+
this.logger.info(`Pushed ${fileName} successfully.`);
|
|
2442
|
+
}
|
|
2443
|
+
return new ToolResult6(ToolErrorCodes6.Success, undefined, published);
|
|
2444
|
+
}
|
|
2445
|
+
async resolvePushUrl(feedUrl, apiKey) {
|
|
2446
|
+
let end = feedUrl.length;
|
|
2447
|
+
while (end > 0 && feedUrl.charCodeAt(end - 1) === 47)
|
|
2448
|
+
end--;
|
|
2449
|
+
const trimmed = feedUrl.slice(0, end);
|
|
2450
|
+
if (/\/api\/v2\/package\/?$/i.test(trimmed)) {
|
|
2451
|
+
return trimmed;
|
|
2452
|
+
}
|
|
2453
|
+
if (/\.json$/i.test(trimmed)) {
|
|
2454
|
+
return this.resolveFromServiceIndex(trimmed, apiKey);
|
|
2455
|
+
}
|
|
2456
|
+
return `${trimmed}/api/v2/package`;
|
|
2457
|
+
}
|
|
2458
|
+
async resolveFromServiceIndex(serviceIndexUrl, apiKey) {
|
|
2459
|
+
const headers = { Accept: "application/json" };
|
|
2460
|
+
if (apiKey) {
|
|
2461
|
+
headers["X-NuGet-ApiKey"] = apiKey;
|
|
2462
|
+
}
|
|
2463
|
+
const response = await fetch(serviceIndexUrl, { headers });
|
|
2464
|
+
if (!response.ok) {
|
|
2465
|
+
throw new Error(`service index returned ${response.status} ${response.statusText}`);
|
|
2466
|
+
}
|
|
2467
|
+
const index = await response.json();
|
|
2468
|
+
const resource = index.resources?.find((r) => r["@type"] === NUGET_V3_PACKAGE_PUBLISH_TYPE);
|
|
2469
|
+
if (!resource?.["@id"]) {
|
|
2470
|
+
throw new Error(`service index has no ${NUGET_V3_PACKAGE_PUBLISH_TYPE} resource`);
|
|
2471
|
+
}
|
|
2472
|
+
return resource["@id"];
|
|
2473
|
+
}
|
|
2474
|
+
async safeReadBody(response) {
|
|
2475
|
+
try {
|
|
2476
|
+
const text = await response.text();
|
|
2477
|
+
return text.slice(0, 500);
|
|
2478
|
+
} catch {
|
|
2479
|
+
return "";
|
|
2480
|
+
}
|
|
2481
|
+
}
|
|
2482
|
+
}
|
|
2483
|
+
|
|
2484
|
+
// src/publish/services/orchestrator-publisher.ts
|
|
2485
|
+
import {
|
|
2486
|
+
ToolErrorCodes as ToolErrorCodes7,
|
|
2487
|
+
ToolResult as ToolResult7,
|
|
2488
|
+
translate as translate10
|
|
2489
|
+
} from "@uipath/solutionpackager-tool-core";
|
|
2490
|
+
|
|
2491
|
+
// src/publish/services/orchestrator-feed-types.ts
|
|
2492
|
+
var PackageFeedDtoPurposeEnum = {
|
|
2493
|
+
Undefined: "Undefined",
|
|
2494
|
+
Processes: "Processes",
|
|
2495
|
+
Libraries: "Libraries",
|
|
2496
|
+
PersonalWorkspace: "PersonalWorkspace",
|
|
2497
|
+
FolderHierarchy: "FolderHierarchy"
|
|
2498
|
+
};
|
|
2499
|
+
var PackageFeedDtoAuthenticationTypeEnum = {
|
|
2500
|
+
Secure: "Secure",
|
|
2501
|
+
ApiKey: "ApiKey",
|
|
2502
|
+
Basic: "Basic"
|
|
2503
|
+
};
|
|
2504
|
+
var ExtendedFolderDtoFeedTypeEnum = {
|
|
2505
|
+
Undefined: "Undefined",
|
|
2506
|
+
Processes: "Processes",
|
|
2507
|
+
Libraries: "Libraries",
|
|
2508
|
+
PersonalWorkspace: "PersonalWorkspace",
|
|
2509
|
+
FolderHierarchy: "FolderHierarchy"
|
|
2510
|
+
};
|
|
2511
|
+
|
|
2512
|
+
// src/publish/services/orchestrator-feeds-service.ts
|
|
2513
|
+
import { addSdkUserAgentHeader } from "@uipath/common/sdk-user-agent";
|
|
2514
|
+
import { translate as translate9 } from "@uipath/solutionpackager-tool-core";
|
|
2515
|
+
// package.json
|
|
2516
|
+
var package_default = {
|
|
2517
|
+
name: "@uipath/project-packager",
|
|
2518
|
+
license: "MIT",
|
|
2519
|
+
version: "1.196.0",
|
|
2520
|
+
description: "UiPath Project Packager - core library for packing individual UiPath projects",
|
|
2521
|
+
type: "module",
|
|
2522
|
+
main: "./dist/index.js",
|
|
2523
|
+
exports: {
|
|
2524
|
+
".": {
|
|
2525
|
+
types: "./dist/src/index.d.ts",
|
|
2526
|
+
default: "./dist/index.js"
|
|
2527
|
+
},
|
|
2528
|
+
"./node": {
|
|
2529
|
+
types: "./dist/src/node.d.ts",
|
|
2530
|
+
default: "./dist/node.js"
|
|
2531
|
+
},
|
|
2532
|
+
"./browser": {
|
|
2533
|
+
types: "./dist/src/browser.d.ts",
|
|
2534
|
+
default: "./dist/browser.js"
|
|
2535
|
+
}
|
|
2536
|
+
},
|
|
2537
|
+
types: "./dist/src/index.d.ts",
|
|
2538
|
+
repository: {
|
|
2539
|
+
type: "git",
|
|
2540
|
+
url: "https://github.com/UiPath/cli.git",
|
|
2541
|
+
directory: "packages/packager/project-packager"
|
|
2542
|
+
},
|
|
2543
|
+
publishConfig: {
|
|
2544
|
+
registry: "https://npm.pkg.github.com/"
|
|
2545
|
+
},
|
|
2546
|
+
files: [
|
|
2547
|
+
"dist",
|
|
2548
|
+
"!dist/**/*.map"
|
|
2549
|
+
],
|
|
2550
|
+
scripts: {
|
|
2551
|
+
build: "bun build ./src/index.ts --outdir dist --format esm --target browser --external @uipath/solutionpackager-tool-core --external '@uipath/filesystem/*' --external @uipath/filesystem && bun build ./src/browser.ts --outdir dist --format esm --target browser --external @uipath/solutionpackager-tool-core --external '@uipath/filesystem/*' --external @uipath/filesystem && bun build ./src/node.ts --outdir dist --format esm --target node --external @uipath/solutionpackager-tool-core --external '@uipath/common/*' --external @uipath/common --external '@uipath/filesystem/*' --external @uipath/filesystem && tsc --emitDeclarationOnly --outDir dist",
|
|
2552
|
+
clean: "rimraf dist",
|
|
2553
|
+
test: "vitest run",
|
|
2554
|
+
e2e: "vitest run --config vitest.e2e.config.ts",
|
|
2555
|
+
"test:coverage": "vitest run --coverage",
|
|
2556
|
+
prepack: "bun run build",
|
|
2557
|
+
"publish:dry": "bun publish --dry-run",
|
|
2558
|
+
"publish:gh": "bun publish",
|
|
2559
|
+
"version:patch": "bun version patch --no-git-tag-version",
|
|
2560
|
+
"version:minor": "bun version minor --no-git-tag-version",
|
|
2561
|
+
"version:major": "bun version major --no-git-tag-version",
|
|
2562
|
+
lint: "biome check ."
|
|
2563
|
+
},
|
|
2564
|
+
dependencies: {
|
|
2565
|
+
"@uipath/filesystem": "workspace:*",
|
|
2566
|
+
"@uipath/solutionpackager-tool-core": "workspace:*",
|
|
2567
|
+
"@uipath/common": "workspace:*"
|
|
2568
|
+
},
|
|
2569
|
+
peerDependencies: {
|
|
2570
|
+
fflate: "^0.8.2"
|
|
2571
|
+
},
|
|
2572
|
+
devDependencies: {
|
|
2573
|
+
"@types/node": "^25.5.2",
|
|
2574
|
+
"@uipath/resource-builder-tool": "2025.11.0-alpha2928-3101",
|
|
2575
|
+
"@uipath/tool-agent": "^1.2.6",
|
|
2576
|
+
"@uipath/packager-tool-apiworkflow": "workspace:*",
|
|
2577
|
+
"@uipath/packager-tool-connector": "workspace:*",
|
|
2578
|
+
"@uipath/packager-tool-flow": "workspace:*",
|
|
2579
|
+
"@uipath/packager-tool-functions": "workspace:*",
|
|
2580
|
+
"@uipath/packager-tool-webapp": "workspace:*",
|
|
2581
|
+
"@uipath/packager-tool-workflowcompiler": "workspace:*",
|
|
2582
|
+
"@vitest/coverage-v8": "^4.1.6",
|
|
2583
|
+
jsdom: "^29.0.0",
|
|
2584
|
+
typescript: "^6.0.2",
|
|
2585
|
+
"vite-tsconfig-paths": "^6.1.1",
|
|
2586
|
+
vitest: "^4.1.6"
|
|
2587
|
+
}
|
|
2588
|
+
};
|
|
2589
|
+
|
|
2590
|
+
// src/publish/services/orchestrator-feeds-service.ts
|
|
2591
|
+
var HEADER_TENANT_ID = "X-UIPATH-TenantId";
|
|
2592
|
+
var FEEDS_PATH = "/api/PackageFeeds/GetFeeds";
|
|
2593
|
+
var FOLDERS_PATH = "/api/FoldersNavigation/GetAllFoldersForCurrentUser";
|
|
2594
|
+
var SDK_USER_AGENT = `${package_default.name.replace(/^@uipath\//, "")}/${package_default.version}`;
|
|
2595
|
+
|
|
2596
|
+
class OrchestratorFeedsService {
|
|
2597
|
+
logger;
|
|
2598
|
+
constructor() {
|
|
2599
|
+
this.logger = new ToolLogger("OrchestratorFeedsService", "Feeds");
|
|
2600
|
+
}
|
|
2601
|
+
async getAccessibleFeedsAsync(connection) {
|
|
2602
|
+
this.ensureOrchestratorUrl(connection);
|
|
2603
|
+
this.logger.info(`Fetching accessible feeds from ${connection.orchestratorUrl}`);
|
|
2604
|
+
try {
|
|
2605
|
+
const json = await orchestratorGet(connection, FEEDS_PATH);
|
|
2606
|
+
return Array.isArray(json) ? json : [];
|
|
2607
|
+
} catch (error) {
|
|
2608
|
+
const { status, statusText, body } = await describeResponseError(error);
|
|
2609
|
+
throw new Error(translate9.t("solutionpackager.publish.errors.getAccessibleFeedsFailed", { status, statusText, body }));
|
|
2610
|
+
}
|
|
2611
|
+
}
|
|
2612
|
+
async getFoldersForCurrentUserAsync(connection) {
|
|
2613
|
+
this.ensureOrchestratorUrl(connection);
|
|
2614
|
+
this.logger.info(`Fetching folders from ${connection.orchestratorUrl}`);
|
|
2615
|
+
try {
|
|
2616
|
+
const json = await orchestratorGet(connection, FOLDERS_PATH);
|
|
2617
|
+
return Array.isArray(json) ? json.map(mapExtendedFolder) : [];
|
|
2618
|
+
} catch (error) {
|
|
2619
|
+
const { status, statusText, body } = await describeResponseError(error);
|
|
2620
|
+
throw new Error(translate9.t("solutionpackager.publish.errors.getFoldersForCurrentUserFailed", { status, statusText, body }));
|
|
2621
|
+
}
|
|
2622
|
+
}
|
|
2623
|
+
ensureOrchestratorUrl(connection) {
|
|
2624
|
+
if (!connection.orchestratorUrl) {
|
|
2625
|
+
throw new Error(translate9.t("solutionpackager.publish.errors.orchestratorUrlRequired"));
|
|
2626
|
+
}
|
|
2627
|
+
}
|
|
2628
|
+
}
|
|
2629
|
+
function mapExtendedFolder(json) {
|
|
2630
|
+
return {
|
|
2631
|
+
isSelectable: json.IsSelectable,
|
|
2632
|
+
hasChildren: json.HasChildren,
|
|
2633
|
+
level: json.Level,
|
|
2634
|
+
key: json.Key,
|
|
2635
|
+
displayName: json.DisplayName,
|
|
2636
|
+
fullyQualifiedName: json.FullyQualifiedName,
|
|
2637
|
+
description: json.Description,
|
|
2638
|
+
folderType: json.FolderType,
|
|
2639
|
+
isPersonal: json.IsPersonal,
|
|
2640
|
+
provisionType: json.ProvisionType,
|
|
2641
|
+
permissionModel: json.PermissionModel,
|
|
2642
|
+
parentId: json.ParentId,
|
|
2643
|
+
parentKey: json.ParentKey,
|
|
2644
|
+
feedType: json.FeedType,
|
|
2645
|
+
id: json.Id
|
|
2646
|
+
};
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
class OrchestratorResponseError extends Error {
|
|
2650
|
+
response;
|
|
2651
|
+
constructor(response) {
|
|
2652
|
+
super(`Orchestrator request failed with status ${response.status}.`);
|
|
2653
|
+
this.response = response;
|
|
2654
|
+
this.name = "OrchestratorResponseError";
|
|
2655
|
+
}
|
|
2656
|
+
}
|
|
2657
|
+
async function orchestratorGet(connection, relativePath) {
|
|
2658
|
+
const url = `${normalizeOrchestratorBasePath(connection.orchestratorUrl)}${relativePath}`;
|
|
2659
|
+
const response = await fetch(url, {
|
|
2660
|
+
method: "GET",
|
|
2661
|
+
headers: buildHeaders(connection)
|
|
2662
|
+
});
|
|
2663
|
+
if (!response.ok) {
|
|
2664
|
+
throw new OrchestratorResponseError(response);
|
|
2665
|
+
}
|
|
2666
|
+
const text = await response.text();
|
|
2667
|
+
if (text === "" || text === "null") {
|
|
2668
|
+
return null;
|
|
2669
|
+
}
|
|
2670
|
+
return JSON.parse(text);
|
|
2671
|
+
}
|
|
2672
|
+
function buildHeaders(connection) {
|
|
2673
|
+
const headers = {};
|
|
2674
|
+
if (connection.accessToken) {
|
|
2675
|
+
headers.Authorization = `Bearer ${connection.accessToken}`;
|
|
2676
|
+
}
|
|
2677
|
+
if (connection.tenantId) {
|
|
2678
|
+
headers[HEADER_TENANT_ID] = connection.tenantId;
|
|
2679
|
+
}
|
|
2680
|
+
return addSdkUserAgentHeader(headers, SDK_USER_AGENT);
|
|
2681
|
+
}
|
|
2682
|
+
function normalizeOrchestratorBasePath(orchestratorUrl) {
|
|
2683
|
+
let end = orchestratorUrl.length;
|
|
2684
|
+
while (end > 0 && orchestratorUrl.charCodeAt(end - 1) === 47)
|
|
2685
|
+
end--;
|
|
2686
|
+
const trimmed = orchestratorUrl.slice(0, end);
|
|
2687
|
+
return /\/orchestrator_$/i.test(trimmed) ? trimmed : `${trimmed}/orchestrator_`;
|
|
2688
|
+
}
|
|
2689
|
+
async function describeResponseError(error) {
|
|
2690
|
+
const response = error?.response;
|
|
2691
|
+
if (response) {
|
|
2692
|
+
let body = "";
|
|
2693
|
+
try {
|
|
2694
|
+
body = (await response.text()).slice(0, 500);
|
|
2695
|
+
} catch {
|
|
2696
|
+
body = "";
|
|
2697
|
+
}
|
|
2698
|
+
return {
|
|
2699
|
+
status: response.status,
|
|
2700
|
+
statusText: response.statusText,
|
|
2701
|
+
body: body ? ` - ${body}` : ""
|
|
2702
|
+
};
|
|
2703
|
+
}
|
|
2704
|
+
const cause = error?.cause;
|
|
2705
|
+
const message = cause instanceof Error ? cause.message : error instanceof Error ? error.message : String(error);
|
|
2706
|
+
return { status: "?", statusText: message, body: "" };
|
|
2707
|
+
}
|
|
2708
|
+
|
|
2709
|
+
// src/publish/services/orchestrator-publisher.ts
|
|
2710
|
+
var HEADER_FOLDER_ID = "X-UIPATH-OrganizationUnitId";
|
|
2711
|
+
var HEADER_TENANT_ID2 = "X-UIPATH-TenantId";
|
|
2712
|
+
var HEADER_NUGET_API_KEY = "X-NuGet-ApiKey";
|
|
2713
|
+
var ORCHESTRATOR_RELATIVE_URL = "/orchestrator_";
|
|
2714
|
+
var PROCESSES_UPLOAD_PATH = "/odata/Processes/UiPath.Server.Configuration.OData.UploadPackage";
|
|
2715
|
+
var LIBRARIES_UPLOAD_PATH = "/odata/Libraries/UiPath.Server.Configuration.OData.UploadPackage";
|
|
2716
|
+
|
|
2717
|
+
class OrchestratorPublisher {
|
|
2718
|
+
fileSystem;
|
|
2719
|
+
logger;
|
|
2720
|
+
feedsService;
|
|
2721
|
+
constructor(fileSystem, feedsService) {
|
|
2722
|
+
this.fileSystem = fileSystem;
|
|
2723
|
+
this.logger = new ToolLogger("ProjectPublisher", "Orchestrator");
|
|
2724
|
+
this.feedsService = feedsService ?? new OrchestratorFeedsService;
|
|
2725
|
+
}
|
|
2726
|
+
async publishAsync(packagePaths, destination) {
|
|
2727
|
+
if (packagePaths.length === 0) {
|
|
2728
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.orchestratorNoPackages"));
|
|
2729
|
+
}
|
|
2730
|
+
if (destination.kind === "OrchestratorCustom" /* OrchestratorCustom */) {
|
|
2731
|
+
if (!destination.publishUrl) {
|
|
2732
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.orchestratorCustomPublishUrlRequired"));
|
|
2733
|
+
}
|
|
2734
|
+
this.logger.info(`Publishing ${packagePaths.length} package(s) to ${destination.publishUrl} (custom)`);
|
|
2735
|
+
return this.postPackages(packagePaths, destination.publishUrl, this.buildCustomHeaders(destination));
|
|
2736
|
+
}
|
|
2737
|
+
if (!destination.connectionInfo?.cloudUrl) {
|
|
2738
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.orchestratorCloudUrlRequired"));
|
|
2739
|
+
}
|
|
2740
|
+
const orchestratorUrl = this.deriveOrchestratorUrl(destination.connectionInfo);
|
|
2741
|
+
let feed;
|
|
2742
|
+
try {
|
|
2743
|
+
feed = await this.resolveFeed(destination, orchestratorUrl);
|
|
2744
|
+
} catch (error) {
|
|
2745
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
2746
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.orchestratorFeedResolutionFailed", { message }));
|
|
2747
|
+
}
|
|
2748
|
+
const targetUrl = this.buildPublishUrl(orchestratorUrl, feed);
|
|
2749
|
+
const headers = this.buildHeaders(destination, feed);
|
|
2750
|
+
this.logger.info(`Publishing ${packagePaths.length} package(s) to ${targetUrl} (feed ${feed.name}, ${feed.purpose})`);
|
|
2751
|
+
return this.postPackages(packagePaths, targetUrl, headers);
|
|
2752
|
+
}
|
|
2753
|
+
async postPackages(packagePaths, targetUrl, headers) {
|
|
2754
|
+
const form = new FormData;
|
|
2755
|
+
for (const packagePath of packagePaths) {
|
|
2756
|
+
const data = await this.fileSystem.readFile(packagePath);
|
|
2757
|
+
if (!data) {
|
|
2758
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.failedToReadPackage", { path: packagePath }));
|
|
2759
|
+
}
|
|
2760
|
+
const fileName = this.fileSystem.path.basename(packagePath);
|
|
2761
|
+
form.append("file", new Blob([data], {
|
|
2762
|
+
type: "application/octet-stream"
|
|
2763
|
+
}), fileName);
|
|
2764
|
+
}
|
|
2765
|
+
const response = await fetch(targetUrl, {
|
|
2766
|
+
method: "POST",
|
|
2767
|
+
headers,
|
|
2768
|
+
body: form
|
|
2769
|
+
});
|
|
2770
|
+
if (!response.ok) {
|
|
2771
|
+
const body = await this.safeReadBody(response);
|
|
2772
|
+
return ToolResult7.error(ToolErrorCodes7.InternalError, translate10.t("solutionpackager.publish.errors.orchestratorPublishFailed", {
|
|
2773
|
+
status: response.status,
|
|
2774
|
+
statusText: response.statusText,
|
|
2775
|
+
body: body ? ` - ${body}` : ""
|
|
2776
|
+
}));
|
|
2777
|
+
}
|
|
2778
|
+
this.logger.info("Orchestrator publish completed.");
|
|
2779
|
+
return new ToolResult7(ToolErrorCodes7.Success, undefined, packagePaths);
|
|
2780
|
+
}
|
|
2781
|
+
async resolveFeed(destination, orchestratorUrl) {
|
|
2782
|
+
const connection = {
|
|
2783
|
+
orchestratorUrl,
|
|
2784
|
+
accessToken: destination.connectionInfo.accessToken,
|
|
2785
|
+
tenantId: destination.connectionInfo.tenantId
|
|
2786
|
+
};
|
|
2787
|
+
const feeds = await this.feedsService.getAccessibleFeedsAsync(connection);
|
|
2788
|
+
if (destination.kind === "OrchestratorPersonalWorkspace" /* OrchestratorPersonalWorkspace */) {
|
|
2789
|
+
const folders = await this.feedsService.getFoldersForCurrentUserAsync(connection);
|
|
2790
|
+
const personalFolder = folders.find((f) => f.feedType === ExtendedFolderDtoFeedTypeEnum.PersonalWorkspace);
|
|
2791
|
+
if (!personalFolder) {
|
|
2792
|
+
const foldersDebug = folders.length === 0 ? "<none>" : folders.map((f) => `${f.displayName} (id=${f.id}, feedType=${f.feedType})`).join(", ");
|
|
2793
|
+
throw new Error(translate10.t("solutionpackager.publish.errors.orchestratorPersonalWorkspaceFolderNotFound", { folders: foldersDebug }));
|
|
2794
|
+
}
|
|
2795
|
+
if (personalFolder.id == null) {
|
|
2796
|
+
throw new Error(`Personal-workspace folder "${personalFolder.displayName}" has no id; cannot resolve its feed.`);
|
|
2797
|
+
}
|
|
2798
|
+
const match2 = feeds.find((f) => f.folderId === personalFolder.id);
|
|
2799
|
+
if (!match2) {
|
|
2800
|
+
this.throwFeedNotFound(destination, feeds);
|
|
2801
|
+
}
|
|
2802
|
+
return match2;
|
|
2803
|
+
}
|
|
2804
|
+
const expectedPurpose = destination.kind === "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */ ? PackageFeedDtoPurposeEnum.Libraries : PackageFeedDtoPurposeEnum.Processes;
|
|
2805
|
+
const match = feeds.find((f) => f.purpose === expectedPurpose && f.folderId == null);
|
|
2806
|
+
if (!match) {
|
|
2807
|
+
this.throwFeedNotFound(destination, feeds);
|
|
2808
|
+
}
|
|
2809
|
+
return match;
|
|
2810
|
+
}
|
|
2811
|
+
throwFeedNotFound(destination, feeds) {
|
|
2812
|
+
const available = feeds.length === 0 ? "<none>" : feeds.map((f) => `${f.name} (purpose=${f.purpose}, folderId=${f.folderId ?? "null"})`).join(", ");
|
|
2813
|
+
throw new Error(translate10.t("solutionpackager.publish.errors.orchestratorFeedNotFound", {
|
|
2814
|
+
kind: destination.kind,
|
|
2815
|
+
available
|
|
2816
|
+
}));
|
|
2817
|
+
}
|
|
2818
|
+
buildPublishUrl(orchestratorUrl, feed) {
|
|
2819
|
+
const baseUrl = feed.publishUrl ? feed.publishUrl : `${orchestratorUrl}${feed.purpose === PackageFeedDtoPurposeEnum.Libraries ? LIBRARIES_UPLOAD_PATH : PROCESSES_UPLOAD_PATH}`;
|
|
2820
|
+
const parsed = new URL(baseUrl);
|
|
2821
|
+
if (feed.id) {
|
|
2822
|
+
parsed.searchParams.set("feedId", feed.id);
|
|
2823
|
+
}
|
|
2824
|
+
return parsed.toString();
|
|
2825
|
+
}
|
|
2826
|
+
deriveOrchestratorUrl(connectionInfo) {
|
|
2827
|
+
const raw = connectionInfo.cloudUrl ?? "";
|
|
2828
|
+
let end = raw.length;
|
|
2829
|
+
while (end > 0 && raw.charCodeAt(end - 1) === 47)
|
|
2830
|
+
end--;
|
|
2831
|
+
return `${raw.slice(0, end)}${ORCHESTRATOR_RELATIVE_URL}`;
|
|
2832
|
+
}
|
|
2833
|
+
buildHeaders(destination, feed) {
|
|
2834
|
+
const headers = this.buildAuthHeaders(destination.connectionInfo);
|
|
2835
|
+
const folderHeader = destination.kind === "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */ ? destination.folderId : feed.folderId;
|
|
2836
|
+
if (folderHeader != null) {
|
|
2837
|
+
headers[HEADER_FOLDER_ID] = String(folderHeader);
|
|
2838
|
+
}
|
|
2839
|
+
if (feed.authenticationType === PackageFeedDtoAuthenticationTypeEnum.ApiKey && feed.apiKey) {
|
|
2840
|
+
headers[HEADER_NUGET_API_KEY] = feed.apiKey;
|
|
2841
|
+
}
|
|
2842
|
+
return headers;
|
|
2843
|
+
}
|
|
2844
|
+
buildCustomHeaders(destination) {
|
|
2845
|
+
const headers = this.buildAuthHeaders(destination.connectionInfo);
|
|
2846
|
+
if (destination.folderId != null) {
|
|
2847
|
+
headers[HEADER_FOLDER_ID] = String(destination.folderId);
|
|
2848
|
+
}
|
|
2849
|
+
if (destination.apiKey) {
|
|
2850
|
+
headers[HEADER_NUGET_API_KEY] = destination.apiKey;
|
|
2851
|
+
}
|
|
2852
|
+
return headers;
|
|
2853
|
+
}
|
|
2854
|
+
buildAuthHeaders(connectionInfo) {
|
|
2855
|
+
const headers = {};
|
|
2856
|
+
if (connectionInfo.accessToken) {
|
|
2857
|
+
headers.Authorization = `Bearer ${connectionInfo.accessToken}`;
|
|
2858
|
+
}
|
|
2859
|
+
if (connectionInfo.tenantId) {
|
|
2860
|
+
headers[HEADER_TENANT_ID2] = connectionInfo.tenantId;
|
|
2861
|
+
}
|
|
2862
|
+
return headers;
|
|
2863
|
+
}
|
|
2864
|
+
async safeReadBody(response) {
|
|
2865
|
+
try {
|
|
2866
|
+
const text = await response.text();
|
|
2867
|
+
return text.slice(0, 500);
|
|
2868
|
+
} catch {
|
|
2869
|
+
return "";
|
|
2870
|
+
}
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2873
|
+
|
|
2874
|
+
// src/publish/services/project-publisher.ts
|
|
2875
|
+
class ProjectPublisher {
|
|
2876
|
+
fileSystem;
|
|
2877
|
+
logger;
|
|
2878
|
+
localFolderPublisher;
|
|
2879
|
+
nugetFeedPublisher;
|
|
2880
|
+
orchestratorPublisher;
|
|
2881
|
+
constructor(fileSystem, publishers) {
|
|
2882
|
+
this.fileSystem = fileSystem;
|
|
2883
|
+
this.logger = new ToolLogger("ProjectPublisher", "Publish");
|
|
2884
|
+
this.localFolderPublisher = publishers?.localFolder ?? new LocalFolderPublisher(fileSystem);
|
|
2885
|
+
this.nugetFeedPublisher = publishers?.nugetFeed ?? new NugetFeedPublisher(fileSystem);
|
|
2886
|
+
this.orchestratorPublisher = publishers?.orchestrator ?? new OrchestratorPublisher(fileSystem);
|
|
2887
|
+
}
|
|
2888
|
+
async publishAsync(options) {
|
|
2889
|
+
if (!options.packagePaths || options.packagePaths.length === 0) {
|
|
2890
|
+
return ToolResult8.error(ToolErrorCodes8.InternalError, translate11.t("solutionpackager.publish.errors.atLeastOnePackage"));
|
|
2891
|
+
}
|
|
2892
|
+
for (const path of options.packagePaths) {
|
|
2893
|
+
if (!await this.fileSystem.exists(path)) {
|
|
2894
|
+
return ToolResult8.error(ToolErrorCodes8.InternalError, translate11.t("solutionpackager.publish.errors.packageNotFound", { path }));
|
|
2895
|
+
}
|
|
2896
|
+
}
|
|
2897
|
+
try {
|
|
2898
|
+
const destination = options.destination;
|
|
2899
|
+
switch (destination.kind) {
|
|
2900
|
+
case "LocalFolder" /* LocalFolder */:
|
|
2901
|
+
return await this.localFolderPublisher.publishAsync(options.packagePaths, destination);
|
|
2902
|
+
case "NugetFeed" /* NugetFeed */:
|
|
2903
|
+
return await this.nugetFeedPublisher.publishAsync(options.packagePaths, destination);
|
|
2904
|
+
case "OrchestratorPersonalWorkspace" /* OrchestratorPersonalWorkspace */:
|
|
2905
|
+
case "OrchestratorTenantProcesses" /* OrchestratorTenantProcesses */:
|
|
2906
|
+
case "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */:
|
|
2907
|
+
case "OrchestratorCustom" /* OrchestratorCustom */:
|
|
2908
|
+
return await this.orchestratorPublisher.publishAsync(options.packagePaths, destination);
|
|
2909
|
+
default: {
|
|
2910
|
+
const exhaustive = destination;
|
|
2911
|
+
return ToolResult8.error(ToolErrorCodes8.InternalError, translate11.t("solutionpackager.publish.errors.unknownDestination", { destination: JSON.stringify(exhaustive) }));
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
} catch (error) {
|
|
2915
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
2916
|
+
const localized = translate11.t("solutionpackager.publish.errors.publishFailed", { message });
|
|
2917
|
+
this.logger.error(localized);
|
|
2918
|
+
return ToolResult8.error(ToolErrorCodes8.InternalError, localized);
|
|
2919
|
+
}
|
|
2920
|
+
}
|
|
2921
|
+
}
|
|
2922
|
+
|
|
2923
|
+
// src/publish/node-project-publisher-factory.ts
|
|
2924
|
+
class NodeProjectPublisherFactory extends BaseNodePackagerFactory {
|
|
2925
|
+
async createAsync(config) {
|
|
2926
|
+
const logger = new ToolLogger("ProjectPublisherFactory", "Create");
|
|
2927
|
+
this.configureLanguage(config);
|
|
2928
|
+
this.configureLogHandler(config);
|
|
2929
|
+
logger.info("Creating ProjectPublisher instance...");
|
|
2930
|
+
const fileSystem = this.getOrCreateFileSystem(config);
|
|
2931
|
+
this.getOrCreateTelemetryService(config);
|
|
2932
|
+
const projectPublisher = new ProjectPublisher(fileSystem);
|
|
2933
|
+
logger.info("ProjectPublisher created successfully.");
|
|
2934
|
+
return projectPublisher;
|
|
2935
|
+
}
|
|
2936
|
+
}
|
|
2937
|
+
async function createNodeProjectPublisher(options) {
|
|
2938
|
+
const factory = new NodeProjectPublisherFactory;
|
|
2939
|
+
return factory.createAsync(options);
|
|
2940
|
+
}
|
|
1833
2941
|
export {
|
|
1834
2942
|
setGlobalLogHandler,
|
|
2943
|
+
createNodeProjectPublisher,
|
|
1835
2944
|
createNodeProjectPackager,
|
|
1836
2945
|
ToolsFactory,
|
|
1837
2946
|
ToolLogger,
|
|
1838
2947
|
TelemetryService2 as TelemetryService,
|
|
1839
2948
|
TelemetryNames,
|
|
1840
2949
|
RulesConfigFileType,
|
|
2950
|
+
PublishDestinationKind,
|
|
1841
2951
|
ProjectValidateOptionsValidator,
|
|
1842
2952
|
ProjectValidateOptions,
|
|
1843
2953
|
ProjectToolExecutor,
|
|
1844
2954
|
ProjectRestoreOptions,
|
|
2955
|
+
ProjectPublisher,
|
|
2956
|
+
ProjectPublishOptions,
|
|
1845
2957
|
ProjectPackager,
|
|
1846
2958
|
ProjectPackOptions,
|
|
1847
2959
|
ProjectLoader,
|
|
@@ -1852,6 +2964,9 @@ export {
|
|
|
1852
2964
|
PackService,
|
|
1853
2965
|
NodePackageSignService,
|
|
1854
2966
|
NodeContextStorage2 as NodeContextStorage,
|
|
1855
|
-
|
|
2967
|
+
GovernancePolicyService,
|
|
2968
|
+
DotnetDiscoveryService,
|
|
2969
|
+
DebugTelemetryProvider2 as DebugTelemetryProvider,
|
|
2970
|
+
ConsoleTelemetryProvider,
|
|
1856
2971
|
BaseNodePackagerFactory
|
|
1857
2972
|
};
|