@uipath/test-manager-tool 1.203.0-preview.212 → 1.204.0-preview.211
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/README.md +5 -3
- package/dist/index.js +1 -1
- package/dist/{tool-t1a96snd.js → tool-y4mv402n.js} +1305 -262
- package/dist/tool.js +1 -1
- package/package.json +2 -2
|
@@ -11180,7 +11180,7 @@ var package_default = {
|
|
|
11180
11180
|
name: "@uipath/test-manager-tool",
|
|
11181
11181
|
author: "UiPath",
|
|
11182
11182
|
license: "SEE LICENSE IN LICENSE.txt",
|
|
11183
|
-
version: "1.
|
|
11183
|
+
version: "1.204.0-preview.211",
|
|
11184
11184
|
description: "Manage test cases, test sets, executions, and results.",
|
|
11185
11185
|
private: false,
|
|
11186
11186
|
repository: {
|
|
@@ -11994,9 +11994,60 @@ function settlePromiseLike(thenable) {
|
|
|
11994
11994
|
return Promise.resolve(thenable).then((data) => [undefined, data]).catch((error) => [toError(error), undefined]);
|
|
11995
11995
|
}
|
|
11996
11996
|
|
|
11997
|
+
// ../common/src/error-graph.ts
|
|
11998
|
+
function* walkErrorGraph(error) {
|
|
11999
|
+
const queue = [error];
|
|
12000
|
+
const seen = new Set;
|
|
12001
|
+
for (let steps = 0;queue.length > 0 && steps < 32; steps++) {
|
|
12002
|
+
const current = queue.shift();
|
|
12003
|
+
if (current === null || typeof current !== "object")
|
|
12004
|
+
continue;
|
|
12005
|
+
if (seen.has(current))
|
|
12006
|
+
continue;
|
|
12007
|
+
seen.add(current);
|
|
12008
|
+
const cur = current;
|
|
12009
|
+
yield cur;
|
|
12010
|
+
if (cur.cause !== undefined)
|
|
12011
|
+
queue.push(cur.cause);
|
|
12012
|
+
if (Array.isArray(cur.errors))
|
|
12013
|
+
queue.push(...cur.errors);
|
|
12014
|
+
}
|
|
12015
|
+
return;
|
|
12016
|
+
}
|
|
12017
|
+
function parseHttpStatusFromMessage(message) {
|
|
12018
|
+
const match = /^HTTP\s+(\d{3})(?::|\s|-|$)/i.exec(message.trim());
|
|
12019
|
+
if (!match)
|
|
12020
|
+
return;
|
|
12021
|
+
const status = Number(match[1]);
|
|
12022
|
+
return Number.isInteger(status) && status >= 100 && status <= 599 ? status : undefined;
|
|
12023
|
+
}
|
|
12024
|
+
function findHttpStatusInGraph(error) {
|
|
12025
|
+
for (const node of walkErrorGraph(error)) {
|
|
12026
|
+
const response = node.response;
|
|
12027
|
+
const explicit = typeof node.status === "number" ? node.status : response?.status;
|
|
12028
|
+
if (typeof explicit === "number" && explicit >= 400 && explicit <= 599) {
|
|
12029
|
+
return explicit;
|
|
12030
|
+
}
|
|
12031
|
+
if (typeof node.message === "string") {
|
|
12032
|
+
const parsed = parseHttpStatusFromMessage(node.message);
|
|
12033
|
+
if (parsed !== undefined && parsed >= 400) {
|
|
12034
|
+
return parsed;
|
|
12035
|
+
}
|
|
12036
|
+
}
|
|
12037
|
+
}
|
|
12038
|
+
return;
|
|
12039
|
+
}
|
|
12040
|
+
|
|
12041
|
+
// ../common/src/local-permission-codes.ts
|
|
12042
|
+
var LOCAL_PERMISSION_ERROR_CODES = new Set([
|
|
12043
|
+
"EACCES",
|
|
12044
|
+
"EPERM",
|
|
12045
|
+
"EROFS"
|
|
12046
|
+
]);
|
|
12047
|
+
|
|
11997
12048
|
// ../common/src/error-handler.ts
|
|
11998
|
-
var DEFAULT_401 = "Unauthorized (401). Run `uip login` to
|
|
11999
|
-
var DEFAULT_403 = "Forbidden (403).
|
|
12049
|
+
var DEFAULT_401 = "Unauthorized (401). The session is missing or expired, or its token carries no scope for this API. Run `uip login status --detailed` to see the session and its scopes.";
|
|
12050
|
+
var DEFAULT_403 = "Forbidden (403). The account lacks permission for this operation, or the token carries no scope for this API. Run `uip login status --detailed` to see the token's scopes.";
|
|
12000
12051
|
var DEFAULT_405 = "Method Not Allowed (405). The endpoint may not exist or the base URL may be incorrect.";
|
|
12001
12052
|
var DEFAULT_413 = "Payload too large (413). The upload exceeded the server or CDN size limit. Reduce the package size — for example, exclude unused dependencies or remove large files from the project — and try again.";
|
|
12002
12053
|
var HTML_RESPONSE_MESSAGE = "Received HTML instead of the expected JSON response.";
|
|
@@ -12023,14 +12074,14 @@ var TLS_ERROR_CODES = new Set([
|
|
|
12023
12074
|
]);
|
|
12024
12075
|
var TLS_INSTRUCTIONS = "The server's TLS certificate could not be verified. Most often a " + "corporate proxy/firewall re-signs HTTPS with a root CA that Node does " + "not trust — set NODE_EXTRA_CA_CERTS to that CA's PEM file (and HTTPS_PROXY " + "if you connect through a proxy). If the certificate is instead expired or " + "its hostname does not match, fix the endpoint URL or the system clock. " + "Then retry.";
|
|
12025
12076
|
var NETWORK_INSTRUCTIONS = "Could not reach the UiPath service. Check your network connection and " + "VPN, confirm any HTTP_PROXY/HTTPS_PROXY/NO_PROXY settings are correct, " + "then retry.";
|
|
12026
|
-
var
|
|
12027
|
-
var LOCAL_PERMISSION_MESSAGE_PATTERN = /\b(EACCES|EPERM|EROFS)\b/;
|
|
12077
|
+
var LOCAL_PERMISSION_MESSAGE_PATTERN = new RegExp(`\\b(${[...LOCAL_PERMISSION_ERROR_CODES].join("|")})\\b`);
|
|
12028
12078
|
function localPermissionInstructions(code, path2) {
|
|
12029
12079
|
const target = path2 !== undefined ? `'${path2}'` : "a local file or resource";
|
|
12030
12080
|
if (code === "EROFS") {
|
|
12031
12081
|
return `The filesystem containing ${target} is read-only (EROFS), so the ` + "CLI could not write to it. This is a local environment problem, " + "not a UiPath service error — retrying will not help. Use a " + "writable location, or give this environment write access to the " + "path.";
|
|
12032
12082
|
}
|
|
12033
|
-
const
|
|
12083
|
+
const onWindows = typeof process !== "undefined" && process.platform === "win32";
|
|
12084
|
+
const remedy = onWindows ? "Re-run from an elevated terminal, close any program holding " + "the file open, or grant your user access to the path." : "Grant this user (or the sandbox the command runs in) access " + "to the path, or run the command outside the sandbox.";
|
|
12034
12085
|
return `The operating system denied access to ${target} (${code}). This is ` + "a local permission problem, not a UiPath service error — retrying " + `without a permission change will not help. ${remedy}`;
|
|
12035
12086
|
}
|
|
12036
12087
|
function describeConnectivityError(error) {
|
|
@@ -12084,48 +12135,6 @@ function localPermissionPath(path2, message) {
|
|
|
12084
12135
|
return path2;
|
|
12085
12136
|
return message ? /'([^']+)'/.exec(message)?.[1] : undefined;
|
|
12086
12137
|
}
|
|
12087
|
-
function* walkErrorGraph(error) {
|
|
12088
|
-
const queue = [error];
|
|
12089
|
-
const seen = new Set;
|
|
12090
|
-
for (let steps = 0;queue.length > 0 && steps < 32; steps++) {
|
|
12091
|
-
const current = queue.shift();
|
|
12092
|
-
if (current === null || typeof current !== "object")
|
|
12093
|
-
continue;
|
|
12094
|
-
if (seen.has(current))
|
|
12095
|
-
continue;
|
|
12096
|
-
seen.add(current);
|
|
12097
|
-
const cur = current;
|
|
12098
|
-
yield cur;
|
|
12099
|
-
if (cur.cause !== undefined)
|
|
12100
|
-
queue.push(cur.cause);
|
|
12101
|
-
if (Array.isArray(cur.errors))
|
|
12102
|
-
queue.push(...cur.errors);
|
|
12103
|
-
}
|
|
12104
|
-
return;
|
|
12105
|
-
}
|
|
12106
|
-
function parseHttpStatusFromMessage(message) {
|
|
12107
|
-
const match = /^HTTP\s+(\d{3})(?::|\s|-|$)/i.exec(message.trim());
|
|
12108
|
-
if (!match)
|
|
12109
|
-
return;
|
|
12110
|
-
const status = Number(match[1]);
|
|
12111
|
-
return Number.isInteger(status) && status >= 100 && status <= 599 ? status : undefined;
|
|
12112
|
-
}
|
|
12113
|
-
function findHttpStatusInGraph(error) {
|
|
12114
|
-
for (const node of walkErrorGraph(error)) {
|
|
12115
|
-
const response = node.response;
|
|
12116
|
-
const explicit = typeof node.status === "number" ? node.status : response?.status;
|
|
12117
|
-
if (typeof explicit === "number" && explicit >= 400 && explicit <= 599) {
|
|
12118
|
-
return explicit;
|
|
12119
|
-
}
|
|
12120
|
-
if (typeof node.message === "string") {
|
|
12121
|
-
const parsed = parseHttpStatusFromMessage(node.message);
|
|
12122
|
-
if (parsed !== undefined && parsed >= 400) {
|
|
12123
|
-
return parsed;
|
|
12124
|
-
}
|
|
12125
|
-
}
|
|
12126
|
-
}
|
|
12127
|
-
return;
|
|
12128
|
-
}
|
|
12129
12138
|
function isHtmlDocument(body) {
|
|
12130
12139
|
return /^\s*(<!doctype html|<html\b)/i.test(body);
|
|
12131
12140
|
}
|
|
@@ -12667,12 +12676,162 @@ function getOutputFilter() {
|
|
|
12667
12676
|
return filterSlot.get();
|
|
12668
12677
|
}
|
|
12669
12678
|
|
|
12679
|
+
// ../common/src/telemetry/telemetry-dimensions.ts
|
|
12680
|
+
var BaseDimensions = {
|
|
12681
|
+
ApplicationName: "ApplicationName",
|
|
12682
|
+
ProductVersion: "ProductVersion",
|
|
12683
|
+
InstallationId: "InstallationId",
|
|
12684
|
+
CloudUserId: "CloudUserId",
|
|
12685
|
+
CloudTenantId: "CloudTenantId",
|
|
12686
|
+
CloudOrganizationId: "CloudOrganizationId",
|
|
12687
|
+
IsInternalUser: "IsInternalUser",
|
|
12688
|
+
Environment: "Environment",
|
|
12689
|
+
BaseUrl: "BaseUrl",
|
|
12690
|
+
Region: "Region",
|
|
12691
|
+
Agent: "Agent",
|
|
12692
|
+
AgentVersion: "AgentVersion",
|
|
12693
|
+
AgentModel: "AgentModel",
|
|
12694
|
+
ToolName: "ToolName",
|
|
12695
|
+
ToolVersion: "ToolVersion",
|
|
12696
|
+
ExecutionContext: "ExecutionContext",
|
|
12697
|
+
CiProvider: "CiProvider",
|
|
12698
|
+
SessionIdSource: "SessionIdSource",
|
|
12699
|
+
SessionId: "SessionId"
|
|
12700
|
+
};
|
|
12701
|
+
var CommandDimensions = {
|
|
12702
|
+
IsCommand: "IsCommand",
|
|
12703
|
+
IsReexec: "IsReexec",
|
|
12704
|
+
CommandName: "CommandName",
|
|
12705
|
+
ExitCode: "ExitCode",
|
|
12706
|
+
TerminalOutcome: "TerminalOutcome",
|
|
12707
|
+
ErrorClass: "ErrorClass",
|
|
12708
|
+
TerminalSignal: "TerminalSignal",
|
|
12709
|
+
ErrorMessage: "ErrorMessage",
|
|
12710
|
+
SkillName: "SkillName",
|
|
12711
|
+
ProductArea: "ProductArea",
|
|
12712
|
+
Mode: "Mode"
|
|
12713
|
+
};
|
|
12714
|
+
var ShipDimensions = {
|
|
12715
|
+
ShipKind: "ShipKind",
|
|
12716
|
+
Target: "Target",
|
|
12717
|
+
ProjectType: "ProjectType",
|
|
12718
|
+
ProjectTypes: "ProjectTypes",
|
|
12719
|
+
ArtifactCorrelationKey: "ArtifactCorrelationKey",
|
|
12720
|
+
PackageName: "PackageName",
|
|
12721
|
+
PackageVersion: "PackageVersion",
|
|
12722
|
+
PackageVersionKey: "PackageVersionKey",
|
|
12723
|
+
DeploymentKey: "DeploymentKey",
|
|
12724
|
+
SolutionId: "SolutionId",
|
|
12725
|
+
FolderKey: "FolderKey",
|
|
12726
|
+
FeedId: "FeedId"
|
|
12727
|
+
};
|
|
12728
|
+
var ErrorDimensions = {
|
|
12729
|
+
Result: "Result",
|
|
12730
|
+
ErrorCode: "ErrorCode",
|
|
12731
|
+
Retry: "Retry",
|
|
12732
|
+
ErrorMessage: "ErrorMessage"
|
|
12733
|
+
};
|
|
12734
|
+
var AuthDimensions = {
|
|
12735
|
+
AuthenticationMethod: "AuthenticationMethod",
|
|
12736
|
+
Success: "Success",
|
|
12737
|
+
Reason: "Reason"
|
|
12738
|
+
};
|
|
12739
|
+
var SkillsDimensions = {
|
|
12740
|
+
SchemaVersion: "SchemaVersion",
|
|
12741
|
+
AgentType: "AgentType",
|
|
12742
|
+
SkillsVersion: "SkillsVersion",
|
|
12743
|
+
UipSubcommand: "UipSubcommand",
|
|
12744
|
+
FileExtension: "FileExtension",
|
|
12745
|
+
SubagentModel: "SubagentModel",
|
|
12746
|
+
SubagentType: "SubagentType",
|
|
12747
|
+
PermissionMode: "PermissionMode",
|
|
12748
|
+
EffortLevel: "EffortLevel",
|
|
12749
|
+
SessionSource: "SessionSource",
|
|
12750
|
+
Outcome: "Outcome",
|
|
12751
|
+
DurationMs: "DurationMs",
|
|
12752
|
+
Source: "Source"
|
|
12753
|
+
};
|
|
12754
|
+
var PackagerDimensions = {
|
|
12755
|
+
ProjectId: "ProjectId",
|
|
12756
|
+
ProjectType: "ProjectType",
|
|
12757
|
+
SolutionId: "SolutionId"
|
|
12758
|
+
};
|
|
12759
|
+
var ScopeDimensions = {
|
|
12760
|
+
FolderId: "FolderId"
|
|
12761
|
+
};
|
|
12762
|
+
var ID_DIMENSIONS = new Set([
|
|
12763
|
+
BaseDimensions.CloudUserId,
|
|
12764
|
+
BaseDimensions.CloudTenantId,
|
|
12765
|
+
BaseDimensions.CloudOrganizationId,
|
|
12766
|
+
BaseDimensions.InstallationId,
|
|
12767
|
+
ShipDimensions.ArtifactCorrelationKey,
|
|
12768
|
+
ShipDimensions.PackageVersionKey,
|
|
12769
|
+
ShipDimensions.DeploymentKey,
|
|
12770
|
+
ShipDimensions.SolutionId,
|
|
12771
|
+
ShipDimensions.FolderKey,
|
|
12772
|
+
ShipDimensions.FeedId,
|
|
12773
|
+
PackagerDimensions.ProjectId
|
|
12774
|
+
]);
|
|
12775
|
+
var NON_IDENTIFIER_PLACEHOLDER_PATTERN = /^(?:\[[A-Z_]+\]|<[^>]+>)$/;
|
|
12776
|
+
var RESERVED_DIMENSION_NAMES = new Set([
|
|
12777
|
+
...Object.values(BaseDimensions),
|
|
12778
|
+
...Object.values(CommandDimensions),
|
|
12779
|
+
...Object.values(ShipDimensions),
|
|
12780
|
+
...Object.values(ErrorDimensions),
|
|
12781
|
+
...Object.values(AuthDimensions),
|
|
12782
|
+
...Object.values(SkillsDimensions),
|
|
12783
|
+
...Object.values(PackagerDimensions),
|
|
12784
|
+
...Object.values(ScopeDimensions)
|
|
12785
|
+
]);
|
|
12786
|
+
var CURATED_DIMENSIONS = new Set([
|
|
12787
|
+
BaseDimensions.ApplicationName,
|
|
12788
|
+
BaseDimensions.ProductVersion,
|
|
12789
|
+
BaseDimensions.InstallationId,
|
|
12790
|
+
BaseDimensions.CloudUserId,
|
|
12791
|
+
BaseDimensions.CloudTenantId,
|
|
12792
|
+
BaseDimensions.CloudOrganizationId,
|
|
12793
|
+
BaseDimensions.IsInternalUser,
|
|
12794
|
+
BaseDimensions.Environment,
|
|
12795
|
+
BaseDimensions.BaseUrl,
|
|
12796
|
+
BaseDimensions.Region,
|
|
12797
|
+
BaseDimensions.Agent,
|
|
12798
|
+
BaseDimensions.AgentVersion,
|
|
12799
|
+
BaseDimensions.ToolVersion,
|
|
12800
|
+
BaseDimensions.ExecutionContext,
|
|
12801
|
+
BaseDimensions.CiProvider,
|
|
12802
|
+
BaseDimensions.SessionIdSource,
|
|
12803
|
+
BaseDimensions.SessionId,
|
|
12804
|
+
...Object.values(CommandDimensions),
|
|
12805
|
+
...Object.values(ShipDimensions)
|
|
12806
|
+
]);
|
|
12807
|
+
function lowercaseIdDimensionValues(properties) {
|
|
12808
|
+
let changed = false;
|
|
12809
|
+
const result = {
|
|
12810
|
+
...properties
|
|
12811
|
+
};
|
|
12812
|
+
for (const key of Object.keys(result)) {
|
|
12813
|
+
const value = result[key];
|
|
12814
|
+
if (!ID_DIMENSIONS.has(key) || typeof value !== "string" || NON_IDENTIFIER_PLACEHOLDER_PATTERN.test(value)) {
|
|
12815
|
+
continue;
|
|
12816
|
+
}
|
|
12817
|
+
const lowered = value.toLowerCase();
|
|
12818
|
+
if (lowered !== value) {
|
|
12819
|
+
result[key] = lowered;
|
|
12820
|
+
changed = true;
|
|
12821
|
+
}
|
|
12822
|
+
}
|
|
12823
|
+
return changed ? result : properties;
|
|
12824
|
+
}
|
|
12825
|
+
|
|
12670
12826
|
// ../common/src/telemetry/command-terminal.ts
|
|
12671
12827
|
var recordedFailureSlot = singleton("CommandTelemetryFailure");
|
|
12672
12828
|
var AUTH_ERROR_CODES = new Set([
|
|
12673
12829
|
"authentication_required",
|
|
12674
12830
|
"permission_denied"
|
|
12675
12831
|
]);
|
|
12832
|
+
var LOCAL_PERMISSION_CLI_ERROR_CODES = new Set([
|
|
12833
|
+
"local_permission_denied"
|
|
12834
|
+
]);
|
|
12676
12835
|
var VALIDATION_ERROR_CODES = new Set(["invalid_argument"]);
|
|
12677
12836
|
var NETWORK_HTTP_ERROR_CODES = new Set([
|
|
12678
12837
|
"network_error",
|
|
@@ -12813,6 +12972,9 @@ function classifyFromErrorCode(errorCode) {
|
|
|
12813
12972
|
if (AUTH_ERROR_CODES.has(errorCode)) {
|
|
12814
12973
|
return "auth";
|
|
12815
12974
|
}
|
|
12975
|
+
if (LOCAL_PERMISSION_CLI_ERROR_CODES.has(errorCode)) {
|
|
12976
|
+
return "local_permission";
|
|
12977
|
+
}
|
|
12816
12978
|
if (VALIDATION_ERROR_CODES.has(errorCode)) {
|
|
12817
12979
|
return "validation";
|
|
12818
12980
|
}
|
|
@@ -12824,6 +12986,15 @@ function classifyFromErrorCode(errorCode) {
|
|
|
12824
12986
|
}
|
|
12825
12987
|
return;
|
|
12826
12988
|
}
|
|
12989
|
+
function hasLocalPermissionCode(error) {
|
|
12990
|
+
for (const node of walkErrorGraph(error)) {
|
|
12991
|
+
const code = node.code;
|
|
12992
|
+
if (typeof code === "string" && LOCAL_PERMISSION_ERROR_CODES.has(code)) {
|
|
12993
|
+
return true;
|
|
12994
|
+
}
|
|
12995
|
+
}
|
|
12996
|
+
return false;
|
|
12997
|
+
}
|
|
12827
12998
|
function classifyFromError(error) {
|
|
12828
12999
|
const code = findCodeInCauseChain(error);
|
|
12829
13000
|
if (code) {
|
|
@@ -12840,6 +13011,9 @@ function classifyFromError(error) {
|
|
|
12840
13011
|
return "missing_dependency";
|
|
12841
13012
|
}
|
|
12842
13013
|
}
|
|
13014
|
+
if (hasLocalPermissionCode(error)) {
|
|
13015
|
+
return "local_permission";
|
|
13016
|
+
}
|
|
12843
13017
|
const message = stringField(error, "message");
|
|
12844
13018
|
if (message?.includes("fetch failed") === true) {
|
|
12845
13019
|
return "network_http";
|
|
@@ -12855,7 +13029,7 @@ function classifyError2(input) {
|
|
|
12855
13029
|
if (recorded?.errorClass) {
|
|
12856
13030
|
return recorded.errorClass;
|
|
12857
13031
|
}
|
|
12858
|
-
const status = recorded?.context?.httpStatus;
|
|
13032
|
+
const status = recorded?.context?.httpStatus ?? findHttpStatusInGraph(input.error);
|
|
12859
13033
|
if (status !== undefined) {
|
|
12860
13034
|
return classifyHttpStatus(status);
|
|
12861
13035
|
}
|
|
@@ -12878,17 +13052,18 @@ function buildCommandTerminalTelemetryProperties(input) {
|
|
|
12878
13052
|
const errorClass = outcome === "success" || outcome === "no_op" ? undefined : outcome === "cancelled" ? "user_cancelled" : classifyError2(input);
|
|
12879
13053
|
const terminalSignal = terminalSignalFor(input, outcome);
|
|
12880
13054
|
return {
|
|
12881
|
-
|
|
12882
|
-
|
|
12883
|
-
...errorClass ? {
|
|
12884
|
-
...terminalSignal ? {
|
|
13055
|
+
[CommandDimensions.ExitCode]: input.exitCode,
|
|
13056
|
+
[CommandDimensions.TerminalOutcome]: outcome,
|
|
13057
|
+
...errorClass ? { [CommandDimensions.ErrorClass]: errorClass } : {},
|
|
13058
|
+
...terminalSignal ? { [CommandDimensions.TerminalSignal]: terminalSignal } : {}
|
|
12885
13059
|
};
|
|
12886
13060
|
}
|
|
12887
13061
|
|
|
12888
13062
|
// ../common/src/telemetry/telemetry-events.ts
|
|
12889
13063
|
var CommonTelemetryEvents = {
|
|
12890
|
-
|
|
12891
|
-
|
|
13064
|
+
Start: "Application.Start",
|
|
13065
|
+
Error: "Application.Error",
|
|
13066
|
+
ShipSucceeded: "Cli.ShipSucceeded"
|
|
12892
13067
|
};
|
|
12893
13068
|
|
|
12894
13069
|
// ../common/src/registry.ts
|
|
@@ -13096,8 +13271,8 @@ function detectExecutionContext(options = {}) {
|
|
|
13096
13271
|
function getExecutionContextTelemetryProperties() {
|
|
13097
13272
|
const detected = detectExecutionContext();
|
|
13098
13273
|
return {
|
|
13099
|
-
|
|
13100
|
-
...detected.ciProvider ? {
|
|
13274
|
+
[BaseDimensions.ExecutionContext]: detected.executionContext,
|
|
13275
|
+
...detected.ciProvider ? { [BaseDimensions.CiProvider]: detected.ciProvider } : {}
|
|
13101
13276
|
};
|
|
13102
13277
|
}
|
|
13103
13278
|
// ../common/src/telemetry/node-context-storage.ts
|
|
@@ -13140,7 +13315,7 @@ function getInboundTraceContext() {
|
|
|
13140
13315
|
var TELEMETRY_SESSION_ID_ENV = "UIPATH_SESSION_ID";
|
|
13141
13316
|
var SESSION_ID_MAX_LENGTH = 64;
|
|
13142
13317
|
var RANDOM_SESSION_ID_LENGTH = 32;
|
|
13143
|
-
var TELEMETRY_SESSION_SOURCE_PROPERTY = "
|
|
13318
|
+
var TELEMETRY_SESSION_SOURCE_PROPERTY = "SessionIdSource";
|
|
13144
13319
|
var CONTROL_CHARACTERS = /\p{Cc}/gu;
|
|
13145
13320
|
var INHERITED_SESSION_SOURCES = [
|
|
13146
13321
|
{ envVar: "CLAUDE_CODE_SESSION_ID", source: "claude-code" },
|
|
@@ -13192,6 +13367,9 @@ function resolveTelemetrySession() {
|
|
|
13192
13367
|
telemetrySessionSlot.set(resolved);
|
|
13193
13368
|
return resolved;
|
|
13194
13369
|
}
|
|
13370
|
+
function getTelemetrySessionId() {
|
|
13371
|
+
return resolveTelemetrySession().id;
|
|
13372
|
+
}
|
|
13195
13373
|
function getTelemetrySessionSource() {
|
|
13196
13374
|
return resolveTelemetrySession().source;
|
|
13197
13375
|
}
|
|
@@ -13272,7 +13450,10 @@ class TelemetryService {
|
|
|
13272
13450
|
} catch (error) {
|
|
13273
13451
|
const durationMs = clock.elapsedMs();
|
|
13274
13452
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
13275
|
-
await this.telemetryProvider.trackRequest(this.spanFor(name, durationMs, false, {
|
|
13453
|
+
await this.telemetryProvider.trackRequest(this.spanFor(name, durationMs, false, {
|
|
13454
|
+
...properties,
|
|
13455
|
+
[CommandDimensions.ErrorMessage]: err.message
|
|
13456
|
+
}, context));
|
|
13276
13457
|
throw error;
|
|
13277
13458
|
}
|
|
13278
13459
|
}
|
|
@@ -13343,7 +13524,10 @@ class TelemetryService {
|
|
|
13343
13524
|
const durationMs = clock.elapsedMs();
|
|
13344
13525
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
13345
13526
|
await this.telemetryProvider.trackDependency({
|
|
13346
|
-
...this.spanFor(name, durationMs, false, {
|
|
13527
|
+
...this.spanFor(name, durationMs, false, {
|
|
13528
|
+
...properties,
|
|
13529
|
+
[CommandDimensions.ErrorMessage]: err.message
|
|
13530
|
+
}, childContext),
|
|
13347
13531
|
type
|
|
13348
13532
|
});
|
|
13349
13533
|
throw error;
|
|
@@ -13378,9 +13562,10 @@ class TelemetryService {
|
|
|
13378
13562
|
...globalProperties,
|
|
13379
13563
|
...this.defaultProperties,
|
|
13380
13564
|
...redactProperties(properties ?? {}),
|
|
13381
|
-
[TELEMETRY_SESSION_SOURCE_PROPERTY]: getTelemetrySessionSource()
|
|
13565
|
+
[TELEMETRY_SESSION_SOURCE_PROPERTY]: getTelemetrySessionSource(),
|
|
13566
|
+
[BaseDimensions.SessionId]: this.telemetryProvider.getSessionId?.() ?? getTelemetrySessionId()
|
|
13382
13567
|
};
|
|
13383
|
-
return enriched;
|
|
13568
|
+
return lowercaseIdDimensionValues(enriched);
|
|
13384
13569
|
}
|
|
13385
13570
|
generateId() {
|
|
13386
13571
|
const bytes = new Uint8Array(8);
|
|
@@ -13579,6 +13764,7 @@ class SuccessOutput {
|
|
|
13579
13764
|
Data;
|
|
13580
13765
|
Pagination;
|
|
13581
13766
|
Instructions;
|
|
13767
|
+
Warning;
|
|
13582
13768
|
Log;
|
|
13583
13769
|
constructor(code, data) {
|
|
13584
13770
|
this.Code = code;
|
|
@@ -14163,7 +14349,165 @@ class FilterImplicitLimitError extends Error {
|
|
|
14163
14349
|
this.instructions = "Pass --limit <n> to choose how many records the filter applies to. " + "To filter over all records, pass the command's maximum accepted --limit (see the option's description in --help).";
|
|
14164
14350
|
}
|
|
14165
14351
|
}
|
|
14166
|
-
function
|
|
14352
|
+
function countRecords(data) {
|
|
14353
|
+
if (Array.isArray(data))
|
|
14354
|
+
return data.length;
|
|
14355
|
+
return data == null ? 0 : 1;
|
|
14356
|
+
}
|
|
14357
|
+
function availableFields(data) {
|
|
14358
|
+
const records = Array.isArray(data) ? data : [data];
|
|
14359
|
+
const keys = new Set;
|
|
14360
|
+
for (const record of records) {
|
|
14361
|
+
if (record && typeof record === "object" && !Array.isArray(record)) {
|
|
14362
|
+
for (const key of Object.keys(record))
|
|
14363
|
+
keys.add(key);
|
|
14364
|
+
}
|
|
14365
|
+
}
|
|
14366
|
+
return [...keys];
|
|
14367
|
+
}
|
|
14368
|
+
function decodeQuotedIdentifier(whole, inner) {
|
|
14369
|
+
const [error, decoded] = catchError(() => JSON.parse(whole));
|
|
14370
|
+
if (!error && typeof decoded === "string")
|
|
14371
|
+
return decoded;
|
|
14372
|
+
return inner.replace(/\\(.)/g, "$1");
|
|
14373
|
+
}
|
|
14374
|
+
function referencedFields(filter) {
|
|
14375
|
+
const top = new Set;
|
|
14376
|
+
const nested = new Set;
|
|
14377
|
+
const withoutValueLiterals = filter.replace(/'(?:\\.|[^'\\])*'/g, " ").replace(/`(?:\\.|[^`\\])*`/g, " ");
|
|
14378
|
+
const isPathTail = (text, index) => text[index - 1] === "." && /[A-Za-z0-9_"]/.test(text[index - 2] ?? "");
|
|
14379
|
+
const quoted = [];
|
|
14380
|
+
const withoutLiterals = withoutValueLiterals.replace(/"((?:\\.|[^"\\])*)"/g, (whole, name, index) => {
|
|
14381
|
+
const isAlias = /^\s*:/.test(withoutValueLiterals.slice(index + whole.length));
|
|
14382
|
+
if (!isAlias) {
|
|
14383
|
+
quoted.push({
|
|
14384
|
+
name: decodeQuotedIdentifier(whole, name),
|
|
14385
|
+
index,
|
|
14386
|
+
tail: isPathTail(withoutValueLiterals, index)
|
|
14387
|
+
});
|
|
14388
|
+
}
|
|
14389
|
+
return `"${" ".repeat(whole.length - 2)}"`;
|
|
14390
|
+
});
|
|
14391
|
+
const descent = /[A-Za-z0-9_"]\s*[.[]/.exec(withoutLiterals);
|
|
14392
|
+
const rootEnd = descent ? descent.index + 1 : Number.POSITIVE_INFINITY;
|
|
14393
|
+
const place = (name, index, tail) => {
|
|
14394
|
+
if (tail || index >= rootEnd)
|
|
14395
|
+
nested.add(name);
|
|
14396
|
+
else
|
|
14397
|
+
top.add(name);
|
|
14398
|
+
};
|
|
14399
|
+
for (const entry of quoted)
|
|
14400
|
+
place(entry.name, entry.index, entry.tail);
|
|
14401
|
+
const identifiers = withoutLiterals.matchAll(/([A-Za-z_][A-Za-z0-9_]*)(\s*[:(])?/g);
|
|
14402
|
+
const reserved = new Set(["true", "false", "null", "and", "or", "not"]);
|
|
14403
|
+
for (const match of identifiers) {
|
|
14404
|
+
const [, name, trailing] = match;
|
|
14405
|
+
if (trailing || reserved.has(name))
|
|
14406
|
+
continue;
|
|
14407
|
+
place(name, match.index, isPathTail(withoutLiterals, match.index));
|
|
14408
|
+
}
|
|
14409
|
+
return {
|
|
14410
|
+
top: [...top],
|
|
14411
|
+
nested: [...nested].filter((name) => !top.has(name)),
|
|
14412
|
+
hasPredicate: /\[\s*\?/.test(withoutValueLiterals)
|
|
14413
|
+
};
|
|
14414
|
+
}
|
|
14415
|
+
function appearsBelowTopLevel(data, name) {
|
|
14416
|
+
let budget = 2000;
|
|
14417
|
+
const visit = (value, depth) => {
|
|
14418
|
+
if (budget-- <= 0 || depth > 4)
|
|
14419
|
+
return false;
|
|
14420
|
+
if (value === null || typeof value !== "object")
|
|
14421
|
+
return false;
|
|
14422
|
+
if (Array.isArray(value))
|
|
14423
|
+
return value.some((entry) => visit(entry, depth));
|
|
14424
|
+
const record = value;
|
|
14425
|
+
if (depth > 0 && Object.hasOwn(record, name))
|
|
14426
|
+
return true;
|
|
14427
|
+
return Object.values(record).some((entry) => visit(entry, depth + 1));
|
|
14428
|
+
};
|
|
14429
|
+
return visit(data, 0);
|
|
14430
|
+
}
|
|
14431
|
+
function alwaysNullKeys(records) {
|
|
14432
|
+
const objects = records.filter((r) => r != null && typeof r === "object" && !Array.isArray(r));
|
|
14433
|
+
if (objects.length === 0 || objects.length !== records.length)
|
|
14434
|
+
return [];
|
|
14435
|
+
const keys = [...new Set(objects.flatMap((o) => Object.keys(o)))];
|
|
14436
|
+
if (keys.length === 0)
|
|
14437
|
+
return [];
|
|
14438
|
+
const nullKeys = keys.filter((key) => objects.every((record) => record[key] === null));
|
|
14439
|
+
return nullKeys.length === keys.length ? nullKeys : [];
|
|
14440
|
+
}
|
|
14441
|
+
function carriesOnlyNulls(value) {
|
|
14442
|
+
if (value === null)
|
|
14443
|
+
return true;
|
|
14444
|
+
if (Array.isArray(value)) {
|
|
14445
|
+
return value.length > 0 && value.every(carriesOnlyNulls);
|
|
14446
|
+
}
|
|
14447
|
+
if (typeof value === "object" && value !== undefined) {
|
|
14448
|
+
const values = Object.values(value);
|
|
14449
|
+
return values.length > 0 && values.every(carriesOnlyNulls);
|
|
14450
|
+
}
|
|
14451
|
+
return false;
|
|
14452
|
+
}
|
|
14453
|
+
function nameList(names, cap2 = 12) {
|
|
14454
|
+
const shown = names.slice(0, cap2).map((n) => `\`${n}\``);
|
|
14455
|
+
const rest = names.length - shown.length;
|
|
14456
|
+
return shown.join(", ") + (rest > 0 ? `, and ${rest} more` : "");
|
|
14457
|
+
}
|
|
14458
|
+
function buildFilterWarning(filter, data, outcome) {
|
|
14459
|
+
const present = availableFields(data);
|
|
14460
|
+
const refs = referencedFields(filter);
|
|
14461
|
+
const unknown = refs.top.filter((name) => !present.includes(name) && !appearsBelowTopLevel(data, name));
|
|
14462
|
+
const unchecked = refs.nested.filter((name) => !present.includes(name));
|
|
14463
|
+
const count = countRecords(data);
|
|
14464
|
+
const scope = `${count} record(s)`;
|
|
14465
|
+
const isNotAField = (names) => `${nameList(names)} ${names.length === 1 ? "is not a field" : "are not fields"} on the ${scope} it read`;
|
|
14466
|
+
const soundness = unchecked.length > 0 ? `${nameList(unchecked)} ${unchecked.length === 1 ? "reads" : "read"} below the top level, so ${unchecked.length === 1 ? "it was" : "they were"} not checked against the record keys` : refs.top.length > 0 ? "every field it names exists" : "";
|
|
14467
|
+
const withSoundness = (base) => soundness ? `${base}, and ${soundness}` : base;
|
|
14468
|
+
let detail;
|
|
14469
|
+
let lede;
|
|
14470
|
+
if (outcome.kind === "null-elements") {
|
|
14471
|
+
lede = "returned only null values";
|
|
14472
|
+
const projected = `all ${outcome.count} of the elements it projected are null`;
|
|
14473
|
+
if (unknown.length > 0) {
|
|
14474
|
+
detail = `${projected}, because ${isNotAField(unknown)}`;
|
|
14475
|
+
} else if (unchecked.length > 0) {
|
|
14476
|
+
detail = withSoundness(projected);
|
|
14477
|
+
} else {
|
|
14478
|
+
detail = `${projected}, and every field it names exists — a multi-select list ` + `(\`[A, B]\`) reads each entry against \`Data\` itself, so on a list ` + `result use \`[].[A, B]\` or \`[].{a: A, b: B}\` to read the records`;
|
|
14479
|
+
}
|
|
14480
|
+
} else if (outcome.kind === "null-rows") {
|
|
14481
|
+
lede = "returned only null values";
|
|
14482
|
+
const projected = `every value it projected is null on all ${outcome.count} row(s)`;
|
|
14483
|
+
detail = unknown.length > 0 ? `${projected}, because ${isNotAField(unknown)}` : withSoundness(projected);
|
|
14484
|
+
} else if (outcome.kind === "null-values") {
|
|
14485
|
+
lede = "returned only null values";
|
|
14486
|
+
const projected = `every key it projected (${nameList(outcome.keys)}) is null`;
|
|
14487
|
+
const sameSet = unknown.length === outcome.keys.length && outcome.keys.every((k) => unknown.includes(k));
|
|
14488
|
+
if (sameSet) {
|
|
14489
|
+
detail = `${isNotAField(outcome.keys)}, so every key it projected is null`;
|
|
14490
|
+
} else if (unknown.length > 0) {
|
|
14491
|
+
detail = `${projected}, because ${isNotAField(unknown)}`;
|
|
14492
|
+
} else {
|
|
14493
|
+
detail = withSoundness(`${projected} on all ${scope}`);
|
|
14494
|
+
}
|
|
14495
|
+
} else {
|
|
14496
|
+
lede = "returned nothing";
|
|
14497
|
+
if (unknown.length > 0) {
|
|
14498
|
+
detail = isNotAField(unknown);
|
|
14499
|
+
} else {
|
|
14500
|
+
const selection = refs.hasPredicate ? "no record matched" : "the expression resolved to no value";
|
|
14501
|
+
detail = withSoundness(`${selection} — it read ${scope}`);
|
|
14502
|
+
}
|
|
14503
|
+
}
|
|
14504
|
+
const fields = present.length > 0 ? ` Available fields: ${nameList(present)}.` : "";
|
|
14505
|
+
return `--output-filter ${JSON.stringify(filter)} ${lede}: ${detail}.${fields}`;
|
|
14506
|
+
}
|
|
14507
|
+
function appendWarning(existing, note) {
|
|
14508
|
+
return existing ? `${existing} ${note}` : note;
|
|
14509
|
+
}
|
|
14510
|
+
function applyFilter(data, filter, onWarning) {
|
|
14167
14511
|
const codec = requireJmespath();
|
|
14168
14512
|
let result;
|
|
14169
14513
|
try {
|
|
@@ -14171,9 +14515,34 @@ function applyFilter(data, filter) {
|
|
|
14171
14515
|
} catch (err) {
|
|
14172
14516
|
throw new FilterEvaluationError(filter, err);
|
|
14173
14517
|
}
|
|
14174
|
-
|
|
14518
|
+
const inputCount = countRecords(data);
|
|
14519
|
+
const warn = (outcome) => {
|
|
14520
|
+
if (inputCount === 0)
|
|
14521
|
+
return;
|
|
14522
|
+
const note = buildFilterWarning(filter, data, outcome);
|
|
14523
|
+
getOutputSink().writeErr(`[WARN] ${note}
|
|
14524
|
+
`);
|
|
14525
|
+
onWarning?.(note);
|
|
14526
|
+
};
|
|
14527
|
+
const warnIfAllNull = (records) => {
|
|
14528
|
+
const keys = alwaysNullKeys(records);
|
|
14529
|
+
if (keys.length > 0)
|
|
14530
|
+
warn({ kind: "null-values", keys });
|
|
14531
|
+
};
|
|
14532
|
+
if (result == null) {
|
|
14533
|
+
warn({ kind: "empty" });
|
|
14175
14534
|
return [];
|
|
14535
|
+
}
|
|
14176
14536
|
if (Array.isArray(result)) {
|
|
14537
|
+
if (result.length === 0) {
|
|
14538
|
+
warn({ kind: "empty" });
|
|
14539
|
+
} else if (result.every((entry) => entry === null)) {
|
|
14540
|
+
warn({ kind: "null-elements", count: result.length });
|
|
14541
|
+
} else if (result.every((entry) => Array.isArray(entry)) && carriesOnlyNulls(result)) {
|
|
14542
|
+
warn({ kind: "null-rows", count: result.length });
|
|
14543
|
+
} else {
|
|
14544
|
+
warnIfAllNull(result);
|
|
14545
|
+
}
|
|
14177
14546
|
if (result.length > 0 && typeof result[0] !== "object") {
|
|
14178
14547
|
const fieldMatch = filter.match(/\.(\w+)$/);
|
|
14179
14548
|
const key = fieldMatch ? fieldMatch[1] : "Value";
|
|
@@ -14181,10 +14550,30 @@ function applyFilter(data, filter) {
|
|
|
14181
14550
|
}
|
|
14182
14551
|
return result;
|
|
14183
14552
|
}
|
|
14184
|
-
if (typeof result === "object")
|
|
14553
|
+
if (typeof result === "object") {
|
|
14554
|
+
warnIfAllNull([result]);
|
|
14185
14555
|
return result;
|
|
14556
|
+
}
|
|
14186
14557
|
return { Value: result };
|
|
14187
14558
|
}
|
|
14559
|
+
function filterFailureData(envelope) {
|
|
14560
|
+
const filter = getOutputFilter();
|
|
14561
|
+
const data = envelope.Data;
|
|
14562
|
+
if (!filter || data == null)
|
|
14563
|
+
return;
|
|
14564
|
+
let note;
|
|
14565
|
+
const [filterError, filtered] = catchError(() => applyFilter(data, filter, (n) => {
|
|
14566
|
+
note = n;
|
|
14567
|
+
}));
|
|
14568
|
+
if (filterError) {
|
|
14569
|
+
envelope.Warning = appendWarning(envelope.Warning, `--output-filter was not applied, so Data is shown in full: ${filterError.message}`);
|
|
14570
|
+
return;
|
|
14571
|
+
}
|
|
14572
|
+
envelope.Data = filtered;
|
|
14573
|
+
if (note) {
|
|
14574
|
+
envelope.Warning = appendWarning(envelope.Warning, note);
|
|
14575
|
+
}
|
|
14576
|
+
}
|
|
14188
14577
|
function defaultErrorCodeForResult(result) {
|
|
14189
14578
|
switch (result) {
|
|
14190
14579
|
case RESULTS.AuthenticationError:
|
|
@@ -14228,7 +14617,7 @@ function defaultErrorCodeForHttpStatus(status) {
|
|
|
14228
14617
|
return "server_error";
|
|
14229
14618
|
return;
|
|
14230
14619
|
}
|
|
14231
|
-
var LOCAL_PERMISSION_TEXT_PATTERN =
|
|
14620
|
+
var LOCAL_PERMISSION_TEXT_PATTERN = new RegExp(`(?:\\b|\\()(?:${[...LOCAL_PERMISSION_ERROR_CODES].join("|")})(?::\\s|\\))`);
|
|
14232
14621
|
function defaultErrorCodeForFailure(data) {
|
|
14233
14622
|
if (data.Result === RESULTS.Failure) {
|
|
14234
14623
|
const status = data.Context?.httpStatus ?? parseHttpStatusFromMessage2(data.Message);
|
|
@@ -14267,8 +14656,14 @@ var OutputFormatter;
|
|
|
14267
14656
|
}
|
|
14268
14657
|
const filter = getOutputFilter();
|
|
14269
14658
|
if (filter) {
|
|
14270
|
-
|
|
14659
|
+
let note;
|
|
14660
|
+
const filtered = applyFilter(data.Data, filter, (n) => {
|
|
14661
|
+
note = n;
|
|
14662
|
+
});
|
|
14271
14663
|
data.Data = normalize ? normalizeDataKeys(filtered, verbatim, subtrees && { refs: subtrees.refs, mode: "skip" }) : filtered;
|
|
14664
|
+
if (note) {
|
|
14665
|
+
data.Warning = appendWarning(data.Warning, note);
|
|
14666
|
+
}
|
|
14272
14667
|
}
|
|
14273
14668
|
logOutput(normalizeOutputKeys(data), getOutputFormat(), options?.tableRowStyle);
|
|
14274
14669
|
}
|
|
@@ -14296,12 +14691,13 @@ var OutputFormatter;
|
|
|
14296
14691
|
delete envelope.TelemetryErrorClass;
|
|
14297
14692
|
delete envelope.TelemetryTerminalOutcome;
|
|
14298
14693
|
delete envelope.TelemetryTerminalSignal;
|
|
14694
|
+
filterFailureData(envelope);
|
|
14299
14695
|
if (!suppressTelemetry) {
|
|
14300
14696
|
telemetry.trackEvent(CommonTelemetryEvents.Error, {
|
|
14301
|
-
|
|
14302
|
-
|
|
14303
|
-
|
|
14304
|
-
|
|
14697
|
+
[ErrorDimensions.Result]: data.Result,
|
|
14698
|
+
[ErrorDimensions.ErrorCode]: data.ErrorCode,
|
|
14699
|
+
[ErrorDimensions.Retry]: data.Retry,
|
|
14700
|
+
[ErrorDimensions.ErrorMessage]: data.Message
|
|
14305
14701
|
});
|
|
14306
14702
|
}
|
|
14307
14703
|
logOutput(normalizeOutputKeys(envelope), getOutputFormat());
|
|
@@ -14344,13 +14740,20 @@ var OutputFormatter;
|
|
|
14344
14740
|
OutputFormatter.log = log;
|
|
14345
14741
|
function formatToString(data) {
|
|
14346
14742
|
const filter = getOutputFilter();
|
|
14743
|
+
const envelope = data;
|
|
14347
14744
|
if ("Data" in data && data.Data != null) {
|
|
14348
14745
|
data.Data = normalizeDataKeys(data.Data);
|
|
14349
14746
|
if (filter) {
|
|
14350
|
-
|
|
14747
|
+
let note;
|
|
14748
|
+
data.Data = normalizeDataKeys(applyFilter(data.Data, filter, (n) => {
|
|
14749
|
+
note = n;
|
|
14750
|
+
}));
|
|
14751
|
+
if (note) {
|
|
14752
|
+
envelope.Warning = appendWarning(envelope.Warning, note);
|
|
14753
|
+
}
|
|
14351
14754
|
}
|
|
14352
14755
|
}
|
|
14353
|
-
const output = normalizeOutputKeys(
|
|
14756
|
+
const output = normalizeOutputKeys(envelope);
|
|
14354
14757
|
const lines = [];
|
|
14355
14758
|
const sink = getOutputSink();
|
|
14356
14759
|
printOutput(output, getOutputFormat(), (msg) => {
|
|
@@ -14400,7 +14803,7 @@ var LEGACY_SKILL_NAMESPACE = "uipath:";
|
|
|
14400
14803
|
var MAX_SKILL_NAME_LENGTH = 80;
|
|
14401
14804
|
var SKILL_NAME_PATTERN = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;
|
|
14402
14805
|
function productMode(productArea, mode) {
|
|
14403
|
-
return {
|
|
14806
|
+
return { ProductArea: productArea, Mode: mode };
|
|
14404
14807
|
}
|
|
14405
14808
|
function attributionRecord(groups) {
|
|
14406
14809
|
const record = {};
|
|
@@ -14458,6 +14861,7 @@ var COMMAND_ATTRIBUTION = commandAttribution([
|
|
|
14458
14861
|
["rpa", "build", ["uip.rpa-legacy"]],
|
|
14459
14862
|
["conversational", "operate", ["uip.conversational"]],
|
|
14460
14863
|
["agents", "build", ["uip.codedagent", "uip.agent"]],
|
|
14864
|
+
["coding-agents", "build", ["uip.coder"]],
|
|
14461
14865
|
["agenthub", "build", ["uip.agenthub"]],
|
|
14462
14866
|
["coded-apps", "build", ["uip.codedapp"]],
|
|
14463
14867
|
["functions", "build", ["uip.function", "uip.functions"]],
|
|
@@ -14543,32 +14947,64 @@ function normalizeSkillName(value) {
|
|
|
14543
14947
|
function buildCommandTelemetryAttribution(commandPath, skillSource) {
|
|
14544
14948
|
const skillName = normalizeSkillName(skillSource);
|
|
14545
14949
|
return {
|
|
14546
|
-
...skillName ? {
|
|
14950
|
+
...skillName ? { SkillName: skillName } : {},
|
|
14547
14951
|
...getCommandProductModeAttribution(commandPath)
|
|
14548
14952
|
};
|
|
14549
14953
|
}
|
|
14954
|
+
var AGENT_SESSION_ENV = {
|
|
14955
|
+
[BaseDimensions.AgentModel]: "UIPATH_AGENT_MODEL",
|
|
14956
|
+
[SkillsDimensions.PermissionMode]: "UIPATH_PERMISSION_MODE",
|
|
14957
|
+
[SkillsDimensions.EffortLevel]: "UIPATH_EFFORT_LEVEL",
|
|
14958
|
+
[SkillsDimensions.SkillsVersion]: "UIPATH_SKILLS_VERSION"
|
|
14959
|
+
};
|
|
14960
|
+
var MAX_TELEMETRY_TOKEN_LENGTH = 120;
|
|
14961
|
+
function sanitizeTelemetryToken(value) {
|
|
14962
|
+
return value.replace(/[^A-Za-z0-9:._/ -]/g, "_").slice(0, MAX_TELEMETRY_TOKEN_LENGTH);
|
|
14963
|
+
}
|
|
14964
|
+
function buildAgentSessionTelemetry(env) {
|
|
14965
|
+
const dimensions = {};
|
|
14966
|
+
for (const [key, variable] of Object.entries(AGENT_SESSION_ENV)) {
|
|
14967
|
+
const value = env[variable]?.trim();
|
|
14968
|
+
if (value) {
|
|
14969
|
+
dimensions[key] = sanitizeTelemetryToken(value);
|
|
14970
|
+
}
|
|
14971
|
+
}
|
|
14972
|
+
return dimensions;
|
|
14973
|
+
}
|
|
14550
14974
|
|
|
14551
14975
|
// ../common/src/telemetry/command-name.ts
|
|
14552
|
-
var
|
|
14976
|
+
var TELEMETRY_NAME_ROOT = "Cli";
|
|
14977
|
+
var CLI_COMMAND_ROOT = "uip";
|
|
14978
|
+
var TELEMETRY_NAME_BARE_ACTION = "Invoke";
|
|
14553
14979
|
function commandTelemetryName(parts) {
|
|
14980
|
+
const action = vetCommandTokens(parts).map(pascalizeToken).join("");
|
|
14981
|
+
return `${TELEMETRY_NAME_ROOT}.${action || TELEMETRY_NAME_BARE_ACTION}`;
|
|
14982
|
+
}
|
|
14983
|
+
function commandInvocationPath(parts) {
|
|
14984
|
+
return [CLI_COMMAND_ROOT, ...vetCommandTokens(parts)].join(" ");
|
|
14985
|
+
}
|
|
14986
|
+
function vetCommandTokens(parts) {
|
|
14554
14987
|
const tokens = [];
|
|
14555
14988
|
for (const part of parts) {
|
|
14556
|
-
const pieces = String(part ?? "").split(/\s+/).filter((token) => token && !token.startsWith("-") && token !==
|
|
14989
|
+
const pieces = String(part ?? "").split(/\s+/).filter((token) => token && !token.startsWith("-") && token !== CLI_COMMAND_ROOT);
|
|
14557
14990
|
if (pieces.every(isCommandToken)) {
|
|
14558
14991
|
tokens.push(...pieces);
|
|
14559
14992
|
continue;
|
|
14560
14993
|
}
|
|
14561
14994
|
tokens.push(UNKNOWN_TOKEN);
|
|
14562
14995
|
}
|
|
14563
|
-
return
|
|
14996
|
+
return tokens;
|
|
14997
|
+
}
|
|
14998
|
+
function pascalizeToken(token) {
|
|
14999
|
+
return token.split("-").filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
|
|
14564
15000
|
}
|
|
14565
|
-
var COMMAND_TOKEN_PATTERN = /^[a-
|
|
15001
|
+
var COMMAND_TOKEN_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
14566
15002
|
var MAX_COMMAND_TOKEN_LENGTH = 32;
|
|
14567
15003
|
var GUID_TOKEN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
14568
15004
|
function isCommandToken(token) {
|
|
14569
|
-
return token.length <= MAX_COMMAND_TOKEN_LENGTH && COMMAND_TOKEN_PATTERN.test(token) && !GUID_TOKEN.test(token)
|
|
15005
|
+
return token.length <= MAX_COMMAND_TOKEN_LENGTH && COMMAND_TOKEN_PATTERN.test(token) && !GUID_TOKEN.test(token);
|
|
14570
15006
|
}
|
|
14571
|
-
var UNKNOWN_TOKEN = "
|
|
15007
|
+
var UNKNOWN_TOKEN = "unknown";
|
|
14572
15008
|
|
|
14573
15009
|
// ../common/src/telemetry/invocation-request.ts
|
|
14574
15010
|
var requestContextSlot = singleton("TelemetryInvocationRequestContext");
|
|
@@ -14673,7 +15109,7 @@ function withheldArgumentValues(cmd) {
|
|
|
14673
15109
|
});
|
|
14674
15110
|
return values;
|
|
14675
15111
|
}
|
|
14676
|
-
function
|
|
15112
|
+
function deriveCommandParts(cmd) {
|
|
14677
15113
|
const parts = [];
|
|
14678
15114
|
let current = cmd;
|
|
14679
15115
|
while (current) {
|
|
@@ -14686,14 +15122,13 @@ function deriveCommandPath(cmd) {
|
|
|
14686
15122
|
if (parts.length > 1) {
|
|
14687
15123
|
parts.shift();
|
|
14688
15124
|
}
|
|
14689
|
-
return
|
|
15125
|
+
return parts;
|
|
14690
15126
|
}
|
|
14691
15127
|
function isErrorContext(value) {
|
|
14692
15128
|
return value !== null && typeof value === "object";
|
|
14693
15129
|
}
|
|
14694
15130
|
function commandHelpHint(commandPath) {
|
|
14695
|
-
|
|
14696
|
-
return `An unexpected error occurred. Run '${command} --help' to verify command syntax, or run with --log-level debug for details.`;
|
|
15131
|
+
return `An unexpected error occurred. Run '${commandPath} --help' to verify command syntax, or run with --log-level debug for details.`;
|
|
14697
15132
|
}
|
|
14698
15133
|
function isPromptCancellation(error) {
|
|
14699
15134
|
return error instanceof Error && error.name === "ExitPromptError";
|
|
@@ -14718,7 +15153,9 @@ Command.prototype.trackedAction = function(context, fn, properties) {
|
|
|
14718
15153
|
yaml: getOutputFormat() === "yaml",
|
|
14719
15154
|
filter: getOutputFilter() !== undefined
|
|
14720
15155
|
});
|
|
14721
|
-
const
|
|
15156
|
+
const commandParts = deriveCommandParts(command);
|
|
15157
|
+
const telemetryName = commandTelemetryName(commandParts);
|
|
15158
|
+
const commandPath = commandInvocationPath(commandParts);
|
|
14722
15159
|
const props = typeof properties === "function" ? properties(...args) : properties;
|
|
14723
15160
|
markCommandStart();
|
|
14724
15161
|
const supplied = recordSuppliedArgumentValues(withheldArgumentValues(command));
|
|
@@ -14753,7 +15190,7 @@ Command.prototype.trackedAction = function(context, fn, properties) {
|
|
|
14753
15190
|
Result: finalResult,
|
|
14754
15191
|
...customErrorCode ? { ErrorCode: customErrorCode } : {},
|
|
14755
15192
|
Message: errorMessage,
|
|
14756
|
-
Instructions: customInstructions ?? commandHelpHint(
|
|
15193
|
+
Instructions: customInstructions ?? commandHelpHint(commandPath),
|
|
14757
15194
|
...customRetry ? { Retry: customRetry } : {},
|
|
14758
15195
|
...customContext ? { Context: customContext } : {}
|
|
14759
15196
|
});
|
|
@@ -14770,8 +15207,8 @@ Command.prototype.trackedAction = function(context, fn, properties) {
|
|
|
14770
15207
|
recordedFailure,
|
|
14771
15208
|
pollSignal: context.pollSignal
|
|
14772
15209
|
});
|
|
14773
|
-
if (terminalTelemetry.
|
|
14774
|
-
telemetry.trackException(error instanceof Error ? error : new Error(String(error)), {
|
|
15210
|
+
if (terminalTelemetry[CommandDimensions.ErrorClass] === "internal" && error) {
|
|
15211
|
+
telemetry.trackException(error instanceof Error ? error : new Error(String(error)), { [CommandDimensions.CommandName]: commandPath }, getInvocationRequestContext());
|
|
14775
15212
|
}
|
|
14776
15213
|
const commandParams = extractCommandParams(command);
|
|
14777
15214
|
if (props) {
|
|
@@ -14782,10 +15219,12 @@ Command.prototype.trackedAction = function(context, fn, properties) {
|
|
|
14782
15219
|
const baseProperties = redactProperties({
|
|
14783
15220
|
...commandParams,
|
|
14784
15221
|
...props,
|
|
14785
|
-
...buildCommandTelemetryAttribution(
|
|
14786
|
-
|
|
15222
|
+
...buildCommandTelemetryAttribution(commandPath, process.env.UIPATH_SKILL),
|
|
15223
|
+
...buildAgentSessionTelemetry(process.env),
|
|
15224
|
+
[CommandDimensions.CommandName]: commandPath,
|
|
15225
|
+
[CommandDimensions.IsCommand]: "true",
|
|
14787
15226
|
...terminalTelemetry,
|
|
14788
|
-
...errorMessage ? { errorMessage } : {}
|
|
15227
|
+
...errorMessage ? { [CommandDimensions.ErrorMessage]: errorMessage } : {}
|
|
14789
15228
|
});
|
|
14790
15229
|
emitInvocationRequest(telemetryName, success, baseProperties);
|
|
14791
15230
|
} finally {
|
|
@@ -15103,6 +15542,40 @@ var BOOLEAN_FLAGS = new Set(HOST_GLOBAL_FLAGS);
|
|
|
15103
15542
|
// ../common/src/interactivity-context.ts
|
|
15104
15543
|
var modeSlot = singleton("InteractivityMode");
|
|
15105
15544
|
var interactiveFlagSlot = singleton("InteractiveFlag");
|
|
15545
|
+
// ../common/src/mime-types.ts
|
|
15546
|
+
var MIME_TYPES_BY_EXTENSION = Object.freeze({
|
|
15547
|
+
pdf: "application/pdf",
|
|
15548
|
+
png: "image/png",
|
|
15549
|
+
jpg: "image/jpeg",
|
|
15550
|
+
jpeg: "image/jpeg",
|
|
15551
|
+
gif: "image/gif",
|
|
15552
|
+
webp: "image/webp",
|
|
15553
|
+
bmp: "image/bmp",
|
|
15554
|
+
tif: "image/tiff",
|
|
15555
|
+
tiff: "image/tiff",
|
|
15556
|
+
svg: "image/svg+xml",
|
|
15557
|
+
txt: "text/plain",
|
|
15558
|
+
log: "text/plain",
|
|
15559
|
+
md: "text/markdown",
|
|
15560
|
+
csv: "text/csv",
|
|
15561
|
+
tsv: "text/tab-separated-values",
|
|
15562
|
+
json: "application/json",
|
|
15563
|
+
xml: "application/xml",
|
|
15564
|
+
html: "text/html",
|
|
15565
|
+
htm: "text/html",
|
|
15566
|
+
yaml: "application/yaml",
|
|
15567
|
+
yml: "application/yaml",
|
|
15568
|
+
doc: "application/msword",
|
|
15569
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
15570
|
+
xls: "application/vnd.ms-excel",
|
|
15571
|
+
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
15572
|
+
ppt: "application/vnd.ms-powerpoint",
|
|
15573
|
+
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
15574
|
+
zip: "application/zip",
|
|
15575
|
+
mp3: "audio/mpeg",
|
|
15576
|
+
wav: "audio/wav",
|
|
15577
|
+
mp4: "video/mp4"
|
|
15578
|
+
});
|
|
15106
15579
|
// ../common/src/option-aliases.ts
|
|
15107
15580
|
function resolveDeprecatedOptionAlias({
|
|
15108
15581
|
preferredValue,
|
|
@@ -15618,7 +16091,7 @@ var ScreenLogger;
|
|
|
15618
16091
|
// ../common/src/sdk-user-agent.ts
|
|
15619
16092
|
var USER_AGENT_HEADER = "User-Agent";
|
|
15620
16093
|
var CODING_AGENT_HEADER = "x-coding-agent-info";
|
|
15621
|
-
var AGENT_PROPERTY =
|
|
16094
|
+
var AGENT_PROPERTY = BaseDimensions.Agent;
|
|
15622
16095
|
var CODING_AGENT_PROPERTY = "CodingAgent";
|
|
15623
16096
|
var sdkUserAgentHostToken = singleton("SdkUserAgentHostToken");
|
|
15624
16097
|
function userAgentPatchKey(userAgent) {
|
|
@@ -16012,7 +16485,7 @@ var package_default2 = {
|
|
|
16012
16485
|
name: "@uipath/test-manager-sdk",
|
|
16013
16486
|
author: "UiPath",
|
|
16014
16487
|
license: "SEE LICENSE IN LICENSE.txt",
|
|
16015
|
-
version: "1.
|
|
16488
|
+
version: "1.204.0",
|
|
16016
16489
|
repository: {
|
|
16017
16490
|
type: "git",
|
|
16018
16491
|
url: "https://github.com/UiPath/cli.git",
|
|
@@ -16045,6 +16518,7 @@ var package_default2 = {
|
|
|
16045
16518
|
private: true,
|
|
16046
16519
|
scripts: {
|
|
16047
16520
|
build: "bun build ./src/index.ts --outdir dist --format esm --target node --sourcemap=linked && bun build ./perf-service-sdk/src/index.ts --outdir dist/perf-service-sdk --format esm --target node --sourcemap=linked && tsc -p tsconfig.build.json --noCheck",
|
|
16521
|
+
typecheck: "tsc --noEmit",
|
|
16048
16522
|
generate: "bun run src/scripts/generate-sdk.ts",
|
|
16049
16523
|
lint: "biome check .",
|
|
16050
16524
|
test: "vitest run",
|
|
@@ -18345,6 +18819,26 @@ function UiPathTestManagementHubTestManagementAbstractionsDTOsOverrideParameters
|
|
|
18345
18819
|
parameters: value["parameters"].map(UiPathTestManagementHubTestManagementAbstractionsDTOsOverrideParameterWithValueDtoToJSON)
|
|
18346
18820
|
};
|
|
18347
18821
|
}
|
|
18822
|
+
// ../test-manager-sdk/generated/src/models/UiPathTestManagementHubTestManagementAbstractionsDTOsProjectSettingsDto.ts
|
|
18823
|
+
function UiPathTestManagementHubTestManagementAbstractionsDTOsProjectSettingsDtoFromJSON(json) {
|
|
18824
|
+
return UiPathTestManagementHubTestManagementAbstractionsDTOsProjectSettingsDtoFromJSONTyped(json, false);
|
|
18825
|
+
}
|
|
18826
|
+
function UiPathTestManagementHubTestManagementAbstractionsDTOsProjectSettingsDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
18827
|
+
if (json == null) {
|
|
18828
|
+
return json;
|
|
18829
|
+
}
|
|
18830
|
+
return {
|
|
18831
|
+
id: json["id"] == null ? undefined : json["id"],
|
|
18832
|
+
projectId: json["projectId"] == null ? undefined : json["projectId"],
|
|
18833
|
+
projectPrefix: json["projectPrefix"] == null ? undefined : json["projectPrefix"],
|
|
18834
|
+
maxNumberOfTestSteps: json["maxNumberOfTestSteps"] == null ? undefined : json["maxNumberOfTestSteps"],
|
|
18835
|
+
projectTimeZone: json["projectTimeZone"] == null ? undefined : json["projectTimeZone"],
|
|
18836
|
+
executionNameFormat: json["executionNameFormat"] == null ? undefined : json["executionNameFormat"],
|
|
18837
|
+
folderKey: json["folderKey"] == null ? undefined : json["folderKey"],
|
|
18838
|
+
governanceEnabled: json["GovernanceEnabled"] == null ? undefined : json["GovernanceEnabled"],
|
|
18839
|
+
governanceSettings: json["GovernanceSettings"] == null ? undefined : json["GovernanceSettings"]
|
|
18840
|
+
};
|
|
18841
|
+
}
|
|
18348
18842
|
// ../test-manager-sdk/generated/src/models/UiPathTestManagementHubTestManagementAbstractionsDTOsStartExecutionRequest.ts
|
|
18349
18843
|
function UiPathTestManagementHubTestManagementAbstractionsDTOsStartExecutionRequestToJSON(json) {
|
|
18350
18844
|
return UiPathTestManagementHubTestManagementAbstractionsDTOsStartExecutionRequestToJSONTyped(json, false);
|
|
@@ -18572,6 +19066,18 @@ function UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectReque
|
|
|
18572
19066
|
isAuthorizationEnabled: value["isAuthorizationEnabled"]
|
|
18573
19067
|
};
|
|
18574
19068
|
}
|
|
19069
|
+
// ../test-manager-sdk/generated/src/models/UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequest.ts
|
|
19070
|
+
function UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequestToJSON(json) {
|
|
19071
|
+
return UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequestToJSONTyped(json, false);
|
|
19072
|
+
}
|
|
19073
|
+
function UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
19074
|
+
if (value == null) {
|
|
19075
|
+
return value;
|
|
19076
|
+
}
|
|
19077
|
+
return {
|
|
19078
|
+
projectTimeZone: value["projectTimeZone"]
|
|
19079
|
+
};
|
|
19080
|
+
}
|
|
18575
19081
|
// ../test-manager-sdk/generated/src/models/UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateRequirementRequest.ts
|
|
18576
19082
|
function UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateRequirementRequestToJSON(json) {
|
|
18577
19083
|
return UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateRequirementRequestToJSONTyped(json, false);
|
|
@@ -20408,13 +20914,12 @@ class ProjectSettingsApi extends BaseAPI {
|
|
|
20408
20914
|
const response = await this.projectSettingsGetProjectFolderRaw(requestParameters, initOverrides);
|
|
20409
20915
|
return await response.value();
|
|
20410
20916
|
}
|
|
20411
|
-
async
|
|
20917
|
+
async projectSettingsGetProjectSettingsRequestOpts(requestParameters) {
|
|
20412
20918
|
if (requestParameters["projectId"] == null) {
|
|
20413
|
-
throw new RequiredError("projectId", 'Required parameter "projectId" was null or undefined when calling
|
|
20919
|
+
throw new RequiredError("projectId", 'Required parameter "projectId" was null or undefined when calling projectSettingsGetProjectSettings().');
|
|
20414
20920
|
}
|
|
20415
20921
|
const queryParameters = {};
|
|
20416
20922
|
const headerParameters = {};
|
|
20417
|
-
headerParameters["Content-Type"] = "application/json";
|
|
20418
20923
|
if (this.configuration && this.configuration.accessToken) {
|
|
20419
20924
|
const token = this.configuration.accessToken;
|
|
20420
20925
|
const tokenString = await token("Bearer", []);
|
|
@@ -20422,28 +20927,28 @@ class ProjectSettingsApi extends BaseAPI {
|
|
|
20422
20927
|
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
20423
20928
|
}
|
|
20424
20929
|
}
|
|
20425
|
-
let urlPath = `/api/v2/{projectId}/projectsettings
|
|
20930
|
+
let urlPath = `/api/v2/{projectId}/projectsettings`;
|
|
20426
20931
|
urlPath = urlPath.replace(`{${"projectId"}}`, encodeURIComponent(String(requestParameters["projectId"])));
|
|
20427
20932
|
return {
|
|
20428
20933
|
path: urlPath,
|
|
20429
|
-
method: "
|
|
20934
|
+
method: "GET",
|
|
20430
20935
|
headers: headerParameters,
|
|
20431
|
-
query: queryParameters
|
|
20432
|
-
body: UiPathTestManagementHubTestManagementAbstractionsDTOsFolderKeyRequestModelToJSON(requestParameters["uiPathTestManagementHubTestManagementAbstractionsDTOsFolderKeyRequestModel"])
|
|
20936
|
+
query: queryParameters
|
|
20433
20937
|
};
|
|
20434
20938
|
}
|
|
20435
|
-
async
|
|
20436
|
-
const requestOptions = await this.
|
|
20939
|
+
async projectSettingsGetProjectSettingsRaw(requestParameters, initOverrides) {
|
|
20940
|
+
const requestOptions = await this.projectSettingsGetProjectSettingsRequestOpts(requestParameters);
|
|
20437
20941
|
const response = await this.request(requestOptions, initOverrides);
|
|
20438
|
-
return new
|
|
20942
|
+
return new JSONApiResponse(response, (jsonValue) => UiPathTestManagementHubTestManagementAbstractionsDTOsProjectSettingsDtoFromJSON(jsonValue));
|
|
20439
20943
|
}
|
|
20440
|
-
async
|
|
20441
|
-
await this.
|
|
20944
|
+
async projectSettingsGetProjectSettings(requestParameters, initOverrides) {
|
|
20945
|
+
const response = await this.projectSettingsGetProjectSettingsRaw(requestParameters, initOverrides);
|
|
20946
|
+
return await response.value();
|
|
20442
20947
|
}
|
|
20443
|
-
|
|
20444
|
-
|
|
20445
|
-
|
|
20446
|
-
|
|
20948
|
+
async projectSettingsPatchProjectSettingsRequestOpts(requestParameters) {
|
|
20949
|
+
if (requestParameters["projectId"] == null) {
|
|
20950
|
+
throw new RequiredError("projectId", 'Required parameter "projectId" was null or undefined when calling projectSettingsPatchProjectSettings().');
|
|
20951
|
+
}
|
|
20447
20952
|
const queryParameters = {};
|
|
20448
20953
|
const headerParameters = {};
|
|
20449
20954
|
headerParameters["Content-Type"] = "application/json";
|
|
@@ -20454,30 +20959,31 @@ class ProjectsApi extends BaseAPI {
|
|
|
20454
20959
|
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
20455
20960
|
}
|
|
20456
20961
|
}
|
|
20457
|
-
let urlPath = `/api/v2/
|
|
20962
|
+
let urlPath = `/api/v2/{projectId}/projectsettings`;
|
|
20963
|
+
urlPath = urlPath.replace(`{${"projectId"}}`, encodeURIComponent(String(requestParameters["projectId"])));
|
|
20458
20964
|
return {
|
|
20459
20965
|
path: urlPath,
|
|
20460
|
-
method: "
|
|
20966
|
+
method: "PATCH",
|
|
20461
20967
|
headers: headerParameters,
|
|
20462
20968
|
query: queryParameters,
|
|
20463
|
-
body:
|
|
20969
|
+
body: requestParameters["microsoftAspNetCoreJsonPatchOperationsOperation"].map(MicrosoftAspNetCoreJsonPatchOperationsOperationToJSON)
|
|
20464
20970
|
};
|
|
20465
20971
|
}
|
|
20466
|
-
async
|
|
20467
|
-
const requestOptions = await this.
|
|
20972
|
+
async projectSettingsPatchProjectSettingsRaw(requestParameters, initOverrides) {
|
|
20973
|
+
const requestOptions = await this.projectSettingsPatchProjectSettingsRequestOpts(requestParameters);
|
|
20468
20974
|
const response = await this.request(requestOptions, initOverrides);
|
|
20469
|
-
return new
|
|
20975
|
+
return new VoidApiResponse(response);
|
|
20470
20976
|
}
|
|
20471
|
-
async
|
|
20472
|
-
|
|
20473
|
-
return await response.value();
|
|
20977
|
+
async projectSettingsPatchProjectSettings(requestParameters, initOverrides) {
|
|
20978
|
+
await this.projectSettingsPatchProjectSettingsRaw(requestParameters, initOverrides);
|
|
20474
20979
|
}
|
|
20475
|
-
async
|
|
20476
|
-
if (requestParameters["
|
|
20477
|
-
throw new RequiredError("
|
|
20980
|
+
async projectSettingsUpdateProjectFolderRequestOpts(requestParameters) {
|
|
20981
|
+
if (requestParameters["projectId"] == null) {
|
|
20982
|
+
throw new RequiredError("projectId", 'Required parameter "projectId" was null or undefined when calling projectSettingsUpdateProjectFolder().');
|
|
20478
20983
|
}
|
|
20479
20984
|
const queryParameters = {};
|
|
20480
20985
|
const headerParameters = {};
|
|
20986
|
+
headerParameters["Content-Type"] = "application/json";
|
|
20481
20987
|
if (this.configuration && this.configuration.accessToken) {
|
|
20482
20988
|
const token = this.configuration.accessToken;
|
|
20483
20989
|
const tokenString = await token("Bearer", []);
|
|
@@ -20485,26 +20991,121 @@ class ProjectsApi extends BaseAPI {
|
|
|
20485
20991
|
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
20486
20992
|
}
|
|
20487
20993
|
}
|
|
20488
|
-
let urlPath = `/api/v2/
|
|
20489
|
-
urlPath = urlPath.replace(`{${"
|
|
20994
|
+
let urlPath = `/api/v2/{projectId}/projectsettings/folder`;
|
|
20995
|
+
urlPath = urlPath.replace(`{${"projectId"}}`, encodeURIComponent(String(requestParameters["projectId"])));
|
|
20490
20996
|
return {
|
|
20491
20997
|
path: urlPath,
|
|
20492
|
-
method: "
|
|
20998
|
+
method: "PUT",
|
|
20493
20999
|
headers: headerParameters,
|
|
20494
|
-
query: queryParameters
|
|
21000
|
+
query: queryParameters,
|
|
21001
|
+
body: UiPathTestManagementHubTestManagementAbstractionsDTOsFolderKeyRequestModelToJSON(requestParameters["uiPathTestManagementHubTestManagementAbstractionsDTOsFolderKeyRequestModel"])
|
|
20495
21002
|
};
|
|
20496
21003
|
}
|
|
20497
|
-
async
|
|
20498
|
-
const requestOptions = await this.
|
|
21004
|
+
async projectSettingsUpdateProjectFolderRaw(requestParameters, initOverrides) {
|
|
21005
|
+
const requestOptions = await this.projectSettingsUpdateProjectFolderRequestOpts(requestParameters);
|
|
20499
21006
|
const response = await this.request(requestOptions, initOverrides);
|
|
20500
21007
|
return new VoidApiResponse(response);
|
|
20501
21008
|
}
|
|
20502
|
-
async
|
|
20503
|
-
await this.
|
|
21009
|
+
async projectSettingsUpdateProjectFolder(requestParameters, initOverrides) {
|
|
21010
|
+
await this.projectSettingsUpdateProjectFolderRaw(requestParameters, initOverrides);
|
|
20504
21011
|
}
|
|
20505
|
-
async
|
|
20506
|
-
if (requestParameters["
|
|
20507
|
-
throw new RequiredError("
|
|
21012
|
+
async projectSettingsUpdateProjectSettingsRequestOpts(requestParameters) {
|
|
21013
|
+
if (requestParameters["projectId"] == null) {
|
|
21014
|
+
throw new RequiredError("projectId", 'Required parameter "projectId" was null or undefined when calling projectSettingsUpdateProjectSettings().');
|
|
21015
|
+
}
|
|
21016
|
+
const queryParameters = {};
|
|
21017
|
+
const headerParameters = {};
|
|
21018
|
+
headerParameters["Content-Type"] = "application/json";
|
|
21019
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
21020
|
+
const token = this.configuration.accessToken;
|
|
21021
|
+
const tokenString = await token("Bearer", []);
|
|
21022
|
+
if (tokenString) {
|
|
21023
|
+
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
21024
|
+
}
|
|
21025
|
+
}
|
|
21026
|
+
let urlPath = `/api/v2/{projectId}/projectsettings`;
|
|
21027
|
+
urlPath = urlPath.replace(`{${"projectId"}}`, encodeURIComponent(String(requestParameters["projectId"])));
|
|
21028
|
+
return {
|
|
21029
|
+
path: urlPath,
|
|
21030
|
+
method: "PUT",
|
|
21031
|
+
headers: headerParameters,
|
|
21032
|
+
query: queryParameters,
|
|
21033
|
+
body: UiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequestToJSON(requestParameters["uiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequest"])
|
|
21034
|
+
};
|
|
21035
|
+
}
|
|
21036
|
+
async projectSettingsUpdateProjectSettingsRaw(requestParameters, initOverrides) {
|
|
21037
|
+
const requestOptions = await this.projectSettingsUpdateProjectSettingsRequestOpts(requestParameters);
|
|
21038
|
+
const response = await this.request(requestOptions, initOverrides);
|
|
21039
|
+
return new VoidApiResponse(response);
|
|
21040
|
+
}
|
|
21041
|
+
async projectSettingsUpdateProjectSettings(requestParameters, initOverrides) {
|
|
21042
|
+
await this.projectSettingsUpdateProjectSettingsRaw(requestParameters, initOverrides);
|
|
21043
|
+
}
|
|
21044
|
+
}
|
|
21045
|
+
// ../test-manager-sdk/generated/src/apis/ProjectsApi.ts
|
|
21046
|
+
class ProjectsApi extends BaseAPI {
|
|
21047
|
+
async projectsCreateRequestOpts(requestParameters) {
|
|
21048
|
+
const queryParameters = {};
|
|
21049
|
+
const headerParameters = {};
|
|
21050
|
+
headerParameters["Content-Type"] = "application/json";
|
|
21051
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
21052
|
+
const token = this.configuration.accessToken;
|
|
21053
|
+
const tokenString = await token("Bearer", []);
|
|
21054
|
+
if (tokenString) {
|
|
21055
|
+
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
21056
|
+
}
|
|
21057
|
+
}
|
|
21058
|
+
let urlPath = `/api/v2/projects`;
|
|
21059
|
+
return {
|
|
21060
|
+
path: urlPath,
|
|
21061
|
+
method: "POST",
|
|
21062
|
+
headers: headerParameters,
|
|
21063
|
+
query: queryParameters,
|
|
21064
|
+
body: UiPathTestManagementHubTestManagementAbstractionsDTOsCreateProjectRequestToJSON(requestParameters["uiPathTestManagementHubTestManagementAbstractionsDTOsCreateProjectRequest"])
|
|
21065
|
+
};
|
|
21066
|
+
}
|
|
21067
|
+
async projectsCreateRaw(requestParameters, initOverrides) {
|
|
21068
|
+
const requestOptions = await this.projectsCreateRequestOpts(requestParameters);
|
|
21069
|
+
const response = await this.request(requestOptions, initOverrides);
|
|
21070
|
+
return new JSONApiResponse(response, (jsonValue) => UiPathTestManagementHubTestManagementAbstractionsDTOsProjectDtoFromJSON(jsonValue));
|
|
21071
|
+
}
|
|
21072
|
+
async projectsCreate(requestParameters = {}, initOverrides) {
|
|
21073
|
+
const response = await this.projectsCreateRaw(requestParameters, initOverrides);
|
|
21074
|
+
return await response.value();
|
|
21075
|
+
}
|
|
21076
|
+
async projectsDeleteRequestOpts(requestParameters) {
|
|
21077
|
+
if (requestParameters["id"] == null) {
|
|
21078
|
+
throw new RequiredError("id", 'Required parameter "id" was null or undefined when calling projectsDelete().');
|
|
21079
|
+
}
|
|
21080
|
+
const queryParameters = {};
|
|
21081
|
+
const headerParameters = {};
|
|
21082
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
21083
|
+
const token = this.configuration.accessToken;
|
|
21084
|
+
const tokenString = await token("Bearer", []);
|
|
21085
|
+
if (tokenString) {
|
|
21086
|
+
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
21087
|
+
}
|
|
21088
|
+
}
|
|
21089
|
+
let urlPath = `/api/v2/projects/{id}`;
|
|
21090
|
+
urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"])));
|
|
21091
|
+
return {
|
|
21092
|
+
path: urlPath,
|
|
21093
|
+
method: "DELETE",
|
|
21094
|
+
headers: headerParameters,
|
|
21095
|
+
query: queryParameters
|
|
21096
|
+
};
|
|
21097
|
+
}
|
|
21098
|
+
async projectsDeleteRaw(requestParameters, initOverrides) {
|
|
21099
|
+
const requestOptions = await this.projectsDeleteRequestOpts(requestParameters);
|
|
21100
|
+
const response = await this.request(requestOptions, initOverrides);
|
|
21101
|
+
return new VoidApiResponse(response);
|
|
21102
|
+
}
|
|
21103
|
+
async projectsDelete(requestParameters, initOverrides) {
|
|
21104
|
+
await this.projectsDeleteRaw(requestParameters, initOverrides);
|
|
21105
|
+
}
|
|
21106
|
+
async projectsGetByIdRequestOpts(requestParameters) {
|
|
21107
|
+
if (requestParameters["id"] == null) {
|
|
21108
|
+
throw new RequiredError("id", 'Required parameter "id" was null or undefined when calling projectsGetById().');
|
|
20508
21109
|
}
|
|
20509
21110
|
const queryParameters = {};
|
|
20510
21111
|
const headerParameters = {};
|
|
@@ -23715,7 +24316,7 @@ function calcPassRate(passed, total) {
|
|
|
23715
24316
|
return total > 0 ? Math.round(passed / total * 1000) / 10 : 0;
|
|
23716
24317
|
}
|
|
23717
24318
|
var DEFAULT_TEST_CASE_VERSION = "1.0.0";
|
|
23718
|
-
var TM_FORBIDDEN_MESSAGE = "Forbidden (403).
|
|
24319
|
+
var TM_FORBIDDEN_MESSAGE = "Forbidden (403). The account lacks the Test Manager permission for this operation, or the token carries no Test Manager (TM.*) scope. Run `uip login status --detailed` to see the token's scopes; an external application needs the TM scopes granted on the app itself.";
|
|
23719
24320
|
var TM_LICENSED_USER_FORBIDDEN_MESSAGE = "Forbidden (403). This operation requires a Test Manager license. Contact your tenant admin to assign a license, or use a read-only command.";
|
|
23720
24321
|
var TM_NOT_AVAILABLE_MESSAGE = "Test Manager is not enabled for this tenant.";
|
|
23721
24322
|
var TM_NOT_AVAILABLE_INSTRUCTIONS = "Enable Test Manager for this tenant, or rerun the command against a tenant where Test Manager is already provisioned.";
|
|
@@ -24193,6 +24794,11 @@ var pickName = (claims) => {
|
|
|
24193
24794
|
const username = asString(claims?.preferred_username);
|
|
24194
24795
|
return asString(claims?.name) ?? (looksLikeEmail(username) ? undefined : username);
|
|
24195
24796
|
};
|
|
24797
|
+
var pickScopes = (claims) => {
|
|
24798
|
+
const raw = claims?.scope;
|
|
24799
|
+
const scopes = Array.isArray(raw) ? raw.filter((entry) => asString(entry) !== undefined) : typeof raw === "string" ? raw.split(/\s+/).filter(Boolean) : [];
|
|
24800
|
+
return scopes.length > 0 ? scopes : undefined;
|
|
24801
|
+
};
|
|
24196
24802
|
var resolveSessionIdentity = (accessToken, authFlow) => {
|
|
24197
24803
|
const claims = accessToken ? decodeClaims(accessToken) : undefined;
|
|
24198
24804
|
const email = pickEmail(claims);
|
|
@@ -24218,6 +24824,7 @@ var resolveSessionIdentity = (accessToken, authFlow) => {
|
|
|
24218
24824
|
identity.clientId = clientId;
|
|
24219
24825
|
return identity;
|
|
24220
24826
|
};
|
|
24827
|
+
var readTokenScopes = (accessToken) => accessToken ? pickScopes(decodeClaims(accessToken)) : undefined;
|
|
24221
24828
|
|
|
24222
24829
|
// ../auth/src/envAuth.ts
|
|
24223
24830
|
var ENV_AUTH_ENABLE_VAR = "UIPATH_CLI_ENABLE_ENV_AUTH";
|
|
@@ -24290,6 +24897,7 @@ var readAuthFromEnv = () => {
|
|
|
24290
24897
|
const expiration = getTokenExpiration(accessToken);
|
|
24291
24898
|
const loginStatus = expiration && expiration <= new Date ? "Expired" : "Logged in";
|
|
24292
24899
|
const identity = resolveSessionIdentity(accessToken);
|
|
24900
|
+
const scopes = readTokenScopes(accessToken);
|
|
24293
24901
|
return {
|
|
24294
24902
|
loginStatus,
|
|
24295
24903
|
accessToken,
|
|
@@ -24300,7 +24908,8 @@ var readAuthFromEnv = () => {
|
|
|
24300
24908
|
tenantId,
|
|
24301
24909
|
expiration,
|
|
24302
24910
|
source: "env-vars" /* EnvironmentVariables */,
|
|
24303
|
-
...identity ? { identity } : {}
|
|
24911
|
+
...identity ? { identity } : {},
|
|
24912
|
+
...scopes ? { scopes } : {}
|
|
24304
24913
|
};
|
|
24305
24914
|
};
|
|
24306
24915
|
|
|
@@ -24938,10 +25547,15 @@ async function buildFileStatus(tokens, credentials, globalHint) {
|
|
|
24938
25547
|
}
|
|
24939
25548
|
function identityFields(accessToken, credentials) {
|
|
24940
25549
|
const identity = resolveSessionIdentity(accessToken, parseAuthFlow(credentials[AUTH_FLOW_ENV_VAR]));
|
|
24941
|
-
|
|
25550
|
+
const scopes = readTokenScopes(accessToken);
|
|
25551
|
+
return {
|
|
25552
|
+
...identity ? { identity } : {},
|
|
25553
|
+
...scopes ? { scopes } : {}
|
|
25554
|
+
};
|
|
24942
25555
|
}
|
|
24943
25556
|
function buildRobotStatus(robotCreds) {
|
|
24944
25557
|
const identity = resolveSessionIdentity(robotCreds.accessToken);
|
|
25558
|
+
const scopes = readTokenScopes(robotCreds.accessToken);
|
|
24945
25559
|
return {
|
|
24946
25560
|
loginStatus: "Logged in",
|
|
24947
25561
|
accessToken: robotCreds.accessToken,
|
|
@@ -24953,7 +25567,8 @@ function buildRobotStatus(robotCreds) {
|
|
|
24953
25567
|
issuer: robotCreds.issuer,
|
|
24954
25568
|
expiration: getTokenExpiration(robotCreds.accessToken),
|
|
24955
25569
|
source: "robot" /* Robot */,
|
|
24956
|
-
...identity ? { identity } : {}
|
|
25570
|
+
...identity ? { identity } : {},
|
|
25571
|
+
...scopes ? { scopes } : {}
|
|
24957
25572
|
};
|
|
24958
25573
|
}
|
|
24959
25574
|
var isFileNotFoundError = (error) => {
|
|
@@ -25220,7 +25835,8 @@ var getAuthContext = async (options = {}) => {
|
|
|
25220
25835
|
organizationId: status.organizationId,
|
|
25221
25836
|
organizationName: status.organizationName,
|
|
25222
25837
|
tenantId: status.tenantId,
|
|
25223
|
-
tenantName
|
|
25838
|
+
tenantName,
|
|
25839
|
+
identity: status.identity
|
|
25224
25840
|
};
|
|
25225
25841
|
};
|
|
25226
25842
|
// ../auth/src/tenantSelection.ts
|
|
@@ -25274,13 +25890,15 @@ async function extractErrorDetails2(error, options) {
|
|
|
25274
25890
|
return result;
|
|
25275
25891
|
}
|
|
25276
25892
|
async function emitTmFailure(error, exitCode = 1) {
|
|
25277
|
-
const { message, details } = await extractErrorDetails2(error, {
|
|
25893
|
+
const { result, message, details, errorCode: errorCode2, retry } = await extractErrorDetails2(error, {
|
|
25278
25894
|
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
25279
25895
|
});
|
|
25280
25896
|
OutputFormatter.error({
|
|
25281
|
-
Result:
|
|
25897
|
+
Result: result,
|
|
25898
|
+
ErrorCode: errorCode2,
|
|
25282
25899
|
Message: message,
|
|
25283
|
-
Instructions: details
|
|
25900
|
+
Instructions: details,
|
|
25901
|
+
Retry: retry
|
|
25284
25902
|
});
|
|
25285
25903
|
processContext.exit(exitCode);
|
|
25286
25904
|
}
|
|
@@ -29680,7 +30298,7 @@ var registerPackCommand = (program2) => {
|
|
|
29680
30298
|
});
|
|
29681
30299
|
};
|
|
29682
30300
|
|
|
29683
|
-
// ../test-manager-sdk/
|
|
30301
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/runtime.ts
|
|
29684
30302
|
var BASE_PATH2 = "/{organizationId}/{tenantName}/testmanager_/performancetest".replace(/\/+$/, "");
|
|
29685
30303
|
|
|
29686
30304
|
class Configuration2 {
|
|
@@ -29945,6 +30563,7 @@ class VoidApiResponse2 {
|
|
|
29945
30563
|
return;
|
|
29946
30564
|
}
|
|
29947
30565
|
}
|
|
30566
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/AggregatedMetricData.ts
|
|
29948
30567
|
function AggregatedMetricDataFromJSON(json) {
|
|
29949
30568
|
return AggregatedMetricDataFromJSONTyped(json, false);
|
|
29950
30569
|
}
|
|
@@ -29994,6 +30613,7 @@ function AggregatedMetricDataFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
29994
30613
|
failedWorkflowCount: json["failedWorkflowCount"] == null ? undefined : json["failedWorkflowCount"]
|
|
29995
30614
|
};
|
|
29996
30615
|
}
|
|
30616
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/AggregatedTransactionMetricData.ts
|
|
29997
30617
|
function AggregatedTransactionMetricDataFromJSON(json) {
|
|
29998
30618
|
return AggregatedTransactionMetricDataFromJSONTyped(json, false);
|
|
29999
30619
|
}
|
|
@@ -30015,12 +30635,15 @@ function AggregatedTransactionMetricDataFromJSONTyped(json, ignoreDiscriminator)
|
|
|
30015
30635
|
requestCount: json["requestCount"] == null ? undefined : json["requestCount"]
|
|
30016
30636
|
};
|
|
30017
30637
|
}
|
|
30638
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/LogSeverity.ts
|
|
30018
30639
|
function LogSeverityFromJSON(json) {
|
|
30019
30640
|
return LogSeverityFromJSONTyped(json, false);
|
|
30020
30641
|
}
|
|
30021
30642
|
function LogSeverityFromJSONTyped(json, ignoreDiscriminator) {
|
|
30022
30643
|
return json;
|
|
30023
30644
|
}
|
|
30645
|
+
|
|
30646
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/ApplicationLogDto.ts
|
|
30024
30647
|
function ApplicationLogDtoFromJSON(json) {
|
|
30025
30648
|
return ApplicationLogDtoFromJSONTyped(json, false);
|
|
30026
30649
|
}
|
|
@@ -30039,12 +30662,14 @@ function ApplicationLogDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30039
30662
|
tenantId: json["tenantId"] == null ? undefined : json["tenantId"]
|
|
30040
30663
|
};
|
|
30041
30664
|
}
|
|
30665
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/ApplicationType.ts
|
|
30042
30666
|
function ApplicationTypeFromJSON(json) {
|
|
30043
30667
|
return ApplicationTypeFromJSONTyped(json, false);
|
|
30044
30668
|
}
|
|
30045
30669
|
function ApplicationTypeFromJSONTyped(json, ignoreDiscriminator) {
|
|
30046
30670
|
return json;
|
|
30047
30671
|
}
|
|
30672
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/RuntimeType.ts
|
|
30048
30673
|
var RuntimeType = {
|
|
30049
30674
|
NUMBER_0: 0,
|
|
30050
30675
|
NUMBER_1: 1,
|
|
@@ -30061,6 +30686,8 @@ function RuntimeTypeFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30061
30686
|
function RuntimeTypeToJSON(value) {
|
|
30062
30687
|
return value;
|
|
30063
30688
|
}
|
|
30689
|
+
|
|
30690
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/AutomationRuntimePairDto.ts
|
|
30064
30691
|
function AutomationRuntimePairDtoToJSON(json) {
|
|
30065
30692
|
return AutomationRuntimePairDtoToJSONTyped(json, false);
|
|
30066
30693
|
}
|
|
@@ -30073,6 +30700,7 @@ function AutomationRuntimePairDtoToJSONTyped(value, ignoreDiscriminator = false)
|
|
|
30073
30700
|
runtimeType: RuntimeTypeToJSON(value["runtimeType"])
|
|
30074
30701
|
};
|
|
30075
30702
|
}
|
|
30703
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/CumulatedValues.ts
|
|
30076
30704
|
function CumulatedValuesFromJSON(json) {
|
|
30077
30705
|
return CumulatedValuesFromJSONTyped(json, false);
|
|
30078
30706
|
}
|
|
@@ -30092,6 +30720,7 @@ function CumulatedValuesFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30092
30720
|
cumulativeFailedWorkflowCount: json["cumulativeFailedWorkflowCount"] == null ? undefined : json["cumulativeFailedWorkflowCount"]
|
|
30093
30721
|
};
|
|
30094
30722
|
}
|
|
30723
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/DryRunReportDto.ts
|
|
30095
30724
|
function DryRunReportDtoFromJSON(json) {
|
|
30096
30725
|
return DryRunReportDtoFromJSONTyped(json, false);
|
|
30097
30726
|
}
|
|
@@ -30104,6 +30733,7 @@ function DryRunReportDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30104
30733
|
applicationType: json["applicationType"] == null ? undefined : ApplicationTypeFromJSON(json["applicationType"])
|
|
30105
30734
|
};
|
|
30106
30735
|
}
|
|
30736
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/DryRunReportEntryDto.ts
|
|
30107
30737
|
function DryRunReportEntryDtoFromJSON(json) {
|
|
30108
30738
|
return DryRunReportEntryDtoFromJSONTyped(json, false);
|
|
30109
30739
|
}
|
|
@@ -30117,6 +30747,7 @@ function DryRunReportEntryDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30117
30747
|
report: json["report"] == null ? undefined : DryRunReportDtoFromJSON(json["report"])
|
|
30118
30748
|
};
|
|
30119
30749
|
}
|
|
30750
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/DryRunReportsDto.ts
|
|
30120
30751
|
function DryRunReportsDtoFromJSON(json) {
|
|
30121
30752
|
return DryRunReportsDtoFromJSONTyped(json, false);
|
|
30122
30753
|
}
|
|
@@ -30129,6 +30760,7 @@ function DryRunReportsDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30129
30760
|
allReportsFound: json["allReportsFound"] == null ? undefined : json["allReportsFound"]
|
|
30130
30761
|
};
|
|
30131
30762
|
}
|
|
30763
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/DryRunReportsRequestDto.ts
|
|
30132
30764
|
function DryRunReportsRequestDtoToJSON(json) {
|
|
30133
30765
|
return DryRunReportsRequestDtoToJSONTyped(json, false);
|
|
30134
30766
|
}
|
|
@@ -30141,6 +30773,7 @@ function DryRunReportsRequestDtoToJSONTyped(value, ignoreDiscriminator = false)
|
|
|
30141
30773
|
automationRuntimePairs: value["automationRuntimePairs"] == null ? undefined : value["automationRuntimePairs"].map(AutomationRuntimePairDtoToJSON)
|
|
30142
30774
|
};
|
|
30143
30775
|
}
|
|
30776
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/ExecutionDataDto.ts
|
|
30144
30777
|
function ExecutionDataDtoFromJSON(json) {
|
|
30145
30778
|
return ExecutionDataDtoFromJSONTyped(json, false);
|
|
30146
30779
|
}
|
|
@@ -30156,6 +30789,7 @@ function ExecutionDataDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30156
30789
|
aggregatedDataWithTransaction: json["aggregatedDataWithTransaction"] == null ? undefined : json["aggregatedDataWithTransaction"].map(AggregatedTransactionMetricDataFromJSON)
|
|
30157
30790
|
};
|
|
30158
30791
|
}
|
|
30792
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/GenerateComparisonReportRequest.ts
|
|
30159
30793
|
function GenerateComparisonReportRequestToJSON(json) {
|
|
30160
30794
|
return GenerateComparisonReportRequestToJSONTyped(json, false);
|
|
30161
30795
|
}
|
|
@@ -30170,6 +30804,7 @@ function GenerateComparisonReportRequestToJSONTyped(value, ignoreDiscriminator =
|
|
|
30170
30804
|
projectPrefix: value["projectPrefix"]
|
|
30171
30805
|
};
|
|
30172
30806
|
}
|
|
30807
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/GenerateReportRequest.ts
|
|
30173
30808
|
function GenerateReportRequestToJSON(json) {
|
|
30174
30809
|
return GenerateReportRequestToJSONTyped(json, false);
|
|
30175
30810
|
}
|
|
@@ -30184,6 +30819,7 @@ function GenerateReportRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
30184
30819
|
projectPrefix: value["projectPrefix"]
|
|
30185
30820
|
};
|
|
30186
30821
|
}
|
|
30822
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/HarHeader.ts
|
|
30187
30823
|
function HarHeaderFromJSON(json) {
|
|
30188
30824
|
return HarHeaderFromJSONTyped(json, false);
|
|
30189
30825
|
}
|
|
@@ -30196,6 +30832,7 @@ function HarHeaderFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30196
30832
|
value: json["value"] == null ? undefined : json["value"]
|
|
30197
30833
|
};
|
|
30198
30834
|
}
|
|
30835
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/HttpErrorsGroup.ts
|
|
30199
30836
|
function HttpErrorsGroupFromJSON(json) {
|
|
30200
30837
|
return HttpErrorsGroupFromJSONTyped(json, false);
|
|
30201
30838
|
}
|
|
@@ -30220,6 +30857,7 @@ function HttpErrorsGroupFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30220
30857
|
remoteIpAddress: json["remoteIpAddress"] == null ? undefined : json["remoteIpAddress"]
|
|
30221
30858
|
};
|
|
30222
30859
|
}
|
|
30860
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/ScenarioDataDto.ts
|
|
30223
30861
|
function ScenarioDataDtoFromJSON(json) {
|
|
30224
30862
|
return ScenarioDataDtoFromJSONTyped(json, false);
|
|
30225
30863
|
}
|
|
@@ -30232,6 +30870,7 @@ function ScenarioDataDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30232
30870
|
applicationLogs: json["applicationLogs"] == null ? undefined : json["applicationLogs"].map(ApplicationLogDtoFromJSON)
|
|
30233
30871
|
};
|
|
30234
30872
|
}
|
|
30873
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/models/StopPayload.ts
|
|
30235
30874
|
function StopPayloadToJSON(json) {
|
|
30236
30875
|
return StopPayloadToJSONTyped(json, false);
|
|
30237
30876
|
}
|
|
@@ -30243,7 +30882,7 @@ function StopPayloadToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
30243
30882
|
scenarioExecutionId: value["scenarioExecutionId"]
|
|
30244
30883
|
};
|
|
30245
30884
|
}
|
|
30246
|
-
|
|
30885
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/apis/ExecutionApi.ts
|
|
30247
30886
|
class ExecutionApi extends BaseAPI2 {
|
|
30248
30887
|
async executionGetAutomationErrorsGetRequestOpts(requestParameters) {
|
|
30249
30888
|
const queryParameters = {};
|
|
@@ -30409,7 +31048,7 @@ class ExecutionApi extends BaseAPI2 {
|
|
|
30409
31048
|
await this.executionStopExecutionPostRaw(requestParameters, initOverrides);
|
|
30410
31049
|
}
|
|
30411
31050
|
}
|
|
30412
|
-
|
|
31051
|
+
// ../test-manager-sdk/perf-service-sdk/generated/src/apis/PerformanceReportApi.ts
|
|
30413
31052
|
class PerformanceReportApi extends BaseAPI2 {
|
|
30414
31053
|
async performanceReportGenerateComparisonHtmlPostRequestOpts(requestParameters) {
|
|
30415
31054
|
const queryParameters = {};
|
|
@@ -30454,7 +31093,6 @@ class PerformanceReportApi extends BaseAPI2 {
|
|
|
30454
31093
|
await this.performanceReportGeneratePostRaw(requestParameters, initOverrides);
|
|
30455
31094
|
}
|
|
30456
31095
|
}
|
|
30457
|
-
|
|
30458
31096
|
// src/mappers/input/perfscenario.input.ts
|
|
30459
31097
|
function toCreateScenarioRequest(input) {
|
|
30460
31098
|
return {
|
|
@@ -30725,7 +31363,7 @@ function applyQuery(data, query) {
|
|
|
30725
31363
|
}
|
|
30726
31364
|
|
|
30727
31365
|
// ../orchestrator-sdk/generated/src/runtime.ts
|
|
30728
|
-
var BASE_PATH3 = "https://alpha.uipath.com/
|
|
31366
|
+
var BASE_PATH3 = "https://alpha.uipath.com/Ada/byoa/orchestrator_".replace(/\/+$/, "");
|
|
30729
31367
|
|
|
30730
31368
|
class Configuration3 {
|
|
30731
31369
|
configuration;
|
|
@@ -30987,7 +31625,7 @@ var package_default3 = {
|
|
|
30987
31625
|
name: "@uipath/orchestrator-sdk",
|
|
30988
31626
|
author: "UiPath",
|
|
30989
31627
|
license: "SEE LICENSE IN LICENSE.txt",
|
|
30990
|
-
version: "1.
|
|
31628
|
+
version: "1.204.0",
|
|
30991
31629
|
repository: {
|
|
30992
31630
|
type: "git",
|
|
30993
31631
|
url: "https://github.com/UiPath/cli.git",
|
|
@@ -31081,6 +31719,97 @@ function BaseRoleDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31081
31719
|
id: json["Id"] == null ? undefined : json["Id"]
|
|
31082
31720
|
};
|
|
31083
31721
|
}
|
|
31722
|
+
// ../orchestrator-sdk/generated/src/models/CredentialStoreAssignmentsDto.ts
|
|
31723
|
+
function CredentialStoreAssignmentsDtoToJSON(json) {
|
|
31724
|
+
return CredentialStoreAssignmentsDtoToJSONTyped(json, false);
|
|
31725
|
+
}
|
|
31726
|
+
function CredentialStoreAssignmentsDtoToJSONTyped(value, ignoreDiscriminator = false) {
|
|
31727
|
+
if (value == null) {
|
|
31728
|
+
return value;
|
|
31729
|
+
}
|
|
31730
|
+
return {
|
|
31731
|
+
CredentialStoreIds: value["credentialStoreIds"],
|
|
31732
|
+
FolderIds: value["folderIds"]
|
|
31733
|
+
};
|
|
31734
|
+
}
|
|
31735
|
+
// ../orchestrator-sdk/generated/src/models/CredentialStoreDetailsDto.ts
|
|
31736
|
+
function CredentialStoreDetailsDtoFromJSON(json) {
|
|
31737
|
+
return CredentialStoreDetailsDtoFromJSONTyped(json, false);
|
|
31738
|
+
}
|
|
31739
|
+
function CredentialStoreDetailsDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
31740
|
+
if (json == null) {
|
|
31741
|
+
return json;
|
|
31742
|
+
}
|
|
31743
|
+
return {
|
|
31744
|
+
isReadOnly: json["IsReadOnly"] == null ? undefined : json["IsReadOnly"]
|
|
31745
|
+
};
|
|
31746
|
+
}
|
|
31747
|
+
// ../orchestrator-sdk/generated/src/models/DefaultCredentialStoreDto.ts
|
|
31748
|
+
function DefaultCredentialStoreDtoFromJSON(json) {
|
|
31749
|
+
return DefaultCredentialStoreDtoFromJSONTyped(json, false);
|
|
31750
|
+
}
|
|
31751
|
+
function DefaultCredentialStoreDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
31752
|
+
if (json == null) {
|
|
31753
|
+
return json;
|
|
31754
|
+
}
|
|
31755
|
+
return {
|
|
31756
|
+
resourceType: json["ResourceType"],
|
|
31757
|
+
id: json["Id"] == null ? undefined : json["Id"]
|
|
31758
|
+
};
|
|
31759
|
+
}
|
|
31760
|
+
// ../orchestrator-sdk/generated/src/models/CredentialStoreFolderAccessDto.ts
|
|
31761
|
+
function CredentialStoreFolderAccessDtoFromJSON(json) {
|
|
31762
|
+
return CredentialStoreFolderAccessDtoFromJSONTyped(json, false);
|
|
31763
|
+
}
|
|
31764
|
+
function CredentialStoreFolderAccessDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
31765
|
+
if (json == null) {
|
|
31766
|
+
return json;
|
|
31767
|
+
}
|
|
31768
|
+
return {
|
|
31769
|
+
isAssignedToFolder: json["isAssignedToFolder"] == null ? undefined : json["isAssignedToFolder"],
|
|
31770
|
+
isInherited: json["isInherited"] == null ? undefined : json["isInherited"],
|
|
31771
|
+
isAccessibleFromTenant: json["isAccessibleFromTenant"] == null ? undefined : json["isAccessibleFromTenant"],
|
|
31772
|
+
inheritedFromFolderName: json["inheritedFromFolderName"] == null ? undefined : json["inheritedFromFolderName"]
|
|
31773
|
+
};
|
|
31774
|
+
}
|
|
31775
|
+
// ../orchestrator-sdk/generated/src/models/CredentialStoreFolderDto.ts
|
|
31776
|
+
function CredentialStoreFolderDtoFromJSON(json) {
|
|
31777
|
+
return CredentialStoreFolderDtoFromJSONTyped(json, false);
|
|
31778
|
+
}
|
|
31779
|
+
function CredentialStoreFolderDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
31780
|
+
if (json == null) {
|
|
31781
|
+
return json;
|
|
31782
|
+
}
|
|
31783
|
+
return {
|
|
31784
|
+
folderId: json["FolderId"] == null ? undefined : json["FolderId"],
|
|
31785
|
+
accessSources: json["AccessSources"] == null ? undefined : json["AccessSources"].map(CredentialStoreFolderAccessDtoFromJSON),
|
|
31786
|
+
key: json["Key"] == null ? undefined : json["Key"],
|
|
31787
|
+
proxyId: json["ProxyId"] == null ? undefined : json["ProxyId"],
|
|
31788
|
+
proxyType: json["ProxyType"] == null ? undefined : json["ProxyType"],
|
|
31789
|
+
hostName: json["HostName"] == null ? undefined : json["HostName"],
|
|
31790
|
+
name: json["Name"],
|
|
31791
|
+
type: json["Type"],
|
|
31792
|
+
additionalConfiguration: json["AdditionalConfiguration"] == null ? undefined : json["AdditionalConfiguration"],
|
|
31793
|
+
details: json["Details"] == null ? undefined : CredentialStoreDetailsDtoFromJSON(json["Details"]),
|
|
31794
|
+
defaultCredentialStores: json["DefaultCredentialStores"] == null ? undefined : json["DefaultCredentialStores"].map(DefaultCredentialStoreDtoFromJSON),
|
|
31795
|
+
restrictToFolders: json["RestrictToFolders"] == null ? undefined : json["RestrictToFolders"],
|
|
31796
|
+
id: json["Id"] == null ? undefined : json["Id"]
|
|
31797
|
+
};
|
|
31798
|
+
}
|
|
31799
|
+
// ../orchestrator-sdk/generated/src/models/CredentialStoresFolderAssociationsDto.ts
|
|
31800
|
+
function CredentialStoresFolderAssociationsDtoToJSON(json) {
|
|
31801
|
+
return CredentialStoresFolderAssociationsDtoToJSONTyped(json, false);
|
|
31802
|
+
}
|
|
31803
|
+
function CredentialStoresFolderAssociationsDtoToJSONTyped(value, ignoreDiscriminator = false) {
|
|
31804
|
+
if (value == null) {
|
|
31805
|
+
return value;
|
|
31806
|
+
}
|
|
31807
|
+
return {
|
|
31808
|
+
FolderId: value["folderId"],
|
|
31809
|
+
AddedCredentialStoreIds: value["addedCredentialStoreIds"],
|
|
31810
|
+
RemovedCredentialStoreIds: value["removedCredentialStoreIds"]
|
|
31811
|
+
};
|
|
31812
|
+
}
|
|
31084
31813
|
// ../orchestrator-sdk/generated/src/models/CurrentUserFolderDto.ts
|
|
31085
31814
|
function CurrentUserFolderDtoFromJSON(json) {
|
|
31086
31815
|
return CurrentUserFolderDtoFromJSONTyped(json, false);
|
|
@@ -31364,6 +32093,18 @@ function FolderFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31364
32093
|
isDeleted: json["isDeleted"] == null ? undefined : json["isDeleted"]
|
|
31365
32094
|
};
|
|
31366
32095
|
}
|
|
32096
|
+
// ../orchestrator-sdk/generated/src/models/FolderAssignCredentialStoresRequest.ts
|
|
32097
|
+
function FolderAssignCredentialStoresRequestToJSON(json) {
|
|
32098
|
+
return FolderAssignCredentialStoresRequestToJSONTyped(json, false);
|
|
32099
|
+
}
|
|
32100
|
+
function FolderAssignCredentialStoresRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
32101
|
+
if (value == null) {
|
|
32102
|
+
return value;
|
|
32103
|
+
}
|
|
32104
|
+
return {
|
|
32105
|
+
assignments: CredentialStoreAssignmentsDtoToJSON(value["assignments"])
|
|
32106
|
+
};
|
|
32107
|
+
}
|
|
31367
32108
|
// ../orchestrator-sdk/generated/src/models/FolderAssignDomainUserRequest.ts
|
|
31368
32109
|
function FolderAssignDomainUserRequestToJSON(json) {
|
|
31369
32110
|
return FolderAssignDomainUserRequestToJSONTyped(json, false);
|
|
@@ -31556,6 +32297,8 @@ function MachineFolderDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31556
32297
|
appTestSlots: json["AppTestSlots"] == null ? undefined : json["AppTestSlots"],
|
|
31557
32298
|
performanceTestSlots: json["PerformanceTestSlots"] == null ? undefined : json["PerformanceTestSlots"],
|
|
31558
32299
|
agentSlots: json["AgentSlots"] == null ? undefined : json["AgentSlots"],
|
|
32300
|
+
functionSlots: json["FunctionSlots"] == null ? undefined : json["FunctionSlots"],
|
|
32301
|
+
executionOptions: json["ExecutionOptions"] == null ? undefined : json["ExecutionOptions"],
|
|
31559
32302
|
automationCloudSlots: json["AutomationCloudSlots"] == null ? undefined : json["AutomationCloudSlots"],
|
|
31560
32303
|
automationCloudTestAutomationSlots: json["AutomationCloudTestAutomationSlots"] == null ? undefined : json["AutomationCloudTestAutomationSlots"],
|
|
31561
32304
|
key: json["Key"] == null ? undefined : json["Key"],
|
|
@@ -31609,6 +32352,18 @@ function MoveFolderMachineChangeFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31609
32352
|
newMachineFolderState: json["NewMachineFolderState"] == null ? undefined : json["NewMachineFolderState"]
|
|
31610
32353
|
};
|
|
31611
32354
|
}
|
|
32355
|
+
// ../orchestrator-sdk/generated/src/models/ODataValueOfIEnumerableOfCredentialStoreFolderDto.ts
|
|
32356
|
+
function ODataValueOfIEnumerableOfCredentialStoreFolderDtoFromJSON(json) {
|
|
32357
|
+
return ODataValueOfIEnumerableOfCredentialStoreFolderDtoFromJSONTyped(json, false);
|
|
32358
|
+
}
|
|
32359
|
+
function ODataValueOfIEnumerableOfCredentialStoreFolderDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
32360
|
+
if (json == null) {
|
|
32361
|
+
return json;
|
|
32362
|
+
}
|
|
32363
|
+
return {
|
|
32364
|
+
value: json["value"] == null ? undefined : json["value"].map(CredentialStoreFolderDtoFromJSON)
|
|
32365
|
+
};
|
|
32366
|
+
}
|
|
31612
32367
|
// ../orchestrator-sdk/generated/src/models/ODataValueOfIEnumerableOfExtendedFolderDto.ts
|
|
31613
32368
|
function ODataValueOfIEnumerableOfExtendedFolderDtoFromJSON(json) {
|
|
31614
32369
|
return ODataValueOfIEnumerableOfExtendedFolderDtoFromJSONTyped(json, false);
|
|
@@ -31817,9 +32572,22 @@ function PersonalWorkspaceFolderFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31817
32572
|
return {
|
|
31818
32573
|
id: json["id"] == null ? undefined : json["id"],
|
|
31819
32574
|
key: json["key"] == null ? undefined : json["key"],
|
|
32575
|
+
parentKey: json["parentKey"] == null ? undefined : json["parentKey"],
|
|
31820
32576
|
fullyQualifiedName: json["fullyQualifiedName"] == null ? undefined : json["fullyQualifiedName"]
|
|
31821
32577
|
};
|
|
31822
32578
|
}
|
|
32579
|
+
// ../orchestrator-sdk/generated/src/models/RemoveCredentialStoresFromFolderRequest.ts
|
|
32580
|
+
function RemoveCredentialStoresFromFolderRequestToJSON(json) {
|
|
32581
|
+
return RemoveCredentialStoresFromFolderRequestToJSONTyped(json, false);
|
|
32582
|
+
}
|
|
32583
|
+
function RemoveCredentialStoresFromFolderRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
32584
|
+
if (value == null) {
|
|
32585
|
+
return value;
|
|
32586
|
+
}
|
|
32587
|
+
return {
|
|
32588
|
+
credentialStoreIds: value["credentialStoreIds"]
|
|
32589
|
+
};
|
|
32590
|
+
}
|
|
31823
32591
|
// ../orchestrator-sdk/generated/src/models/RemoveMachinesFromFolderRequest.ts
|
|
31824
32592
|
function RemoveMachinesFromFolderRequestToJSON(json) {
|
|
31825
32593
|
return RemoveMachinesFromFolderRequestToJSONTyped(json, false);
|
|
@@ -31896,6 +32664,18 @@ function RootFolderDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31896
32664
|
key: json["key"] == null ? undefined : json["key"]
|
|
31897
32665
|
};
|
|
31898
32666
|
}
|
|
32667
|
+
// ../orchestrator-sdk/generated/src/models/UpdateCredentialStoresToFolderAssociationsRequest.ts
|
|
32668
|
+
function UpdateCredentialStoresToFolderAssociationsRequestToJSON(json) {
|
|
32669
|
+
return UpdateCredentialStoresToFolderAssociationsRequestToJSONTyped(json, false);
|
|
32670
|
+
}
|
|
32671
|
+
function UpdateCredentialStoresToFolderAssociationsRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
32672
|
+
if (value == null) {
|
|
32673
|
+
return value;
|
|
32674
|
+
}
|
|
32675
|
+
return {
|
|
32676
|
+
associations: CredentialStoresFolderAssociationsDtoToJSON(value["associations"])
|
|
32677
|
+
};
|
|
32678
|
+
}
|
|
31899
32679
|
// ../orchestrator-sdk/generated/src/models/UpdateMachinesToFolderAssociationsRequest.ts
|
|
31900
32680
|
function UpdateMachinesToFolderAssociationsRequestToJSON(json) {
|
|
31901
32681
|
return UpdateMachinesToFolderAssociationsRequestToJSONTyped(json, false);
|
|
@@ -31925,6 +32705,26 @@ function UserRoleAssignmentsDtoFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31925
32705
|
}
|
|
31926
32706
|
// ../orchestrator-sdk/generated/src/apis/FoldersApi.ts
|
|
31927
32707
|
class FoldersApi extends BaseAPI3 {
|
|
32708
|
+
async foldersAssignCredentialStoresRaw(requestParameters, initOverrides) {
|
|
32709
|
+
const queryParameters = {};
|
|
32710
|
+
const headerParameters = {};
|
|
32711
|
+
headerParameters["Content-Type"] = "application/json;odata.metadata=minimal;odata.streaming=true";
|
|
32712
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
32713
|
+
headerParameters["Authorization"] = await this.configuration.accessToken("OAuth2", []);
|
|
32714
|
+
}
|
|
32715
|
+
let urlPath = `/odata/Folders/UiPath.Server.Configuration.OData.AssignCredentialStores`;
|
|
32716
|
+
const response = await this.request({
|
|
32717
|
+
path: urlPath,
|
|
32718
|
+
method: "POST",
|
|
32719
|
+
headers: headerParameters,
|
|
32720
|
+
query: queryParameters,
|
|
32721
|
+
body: FolderAssignCredentialStoresRequestToJSON(requestParameters["body"])
|
|
32722
|
+
}, initOverrides);
|
|
32723
|
+
return new VoidApiResponse3(response);
|
|
32724
|
+
}
|
|
32725
|
+
async foldersAssignCredentialStores(requestParameters = {}, initOverrides) {
|
|
32726
|
+
await this.foldersAssignCredentialStoresRaw(requestParameters, initOverrides);
|
|
32727
|
+
}
|
|
31928
32728
|
async foldersAssignDirectoryUserRaw(requestParameters, initOverrides) {
|
|
31929
32729
|
const queryParameters = {};
|
|
31930
32730
|
const headerParameters = {};
|
|
@@ -32314,6 +33114,50 @@ class FoldersApi extends BaseAPI3 {
|
|
|
32314
33114
|
const response = await this.foldersGetByKeyByIdentifierRaw(requestParameters, initOverrides);
|
|
32315
33115
|
return await response.value();
|
|
32316
33116
|
}
|
|
33117
|
+
async foldersGetCredentialStoresForFolderByKeyRaw(requestParameters, initOverrides) {
|
|
33118
|
+
if (requestParameters["key"] == null) {
|
|
33119
|
+
throw new RequiredError3("key", 'Required parameter "key" was null or undefined when calling foldersGetCredentialStoresForFolderByKey().');
|
|
33120
|
+
}
|
|
33121
|
+
const queryParameters = {};
|
|
33122
|
+
if (requestParameters["$select"] != null) {
|
|
33123
|
+
queryParameters["$select"] = requestParameters["$select"];
|
|
33124
|
+
}
|
|
33125
|
+
if (requestParameters["$expand"] != null) {
|
|
33126
|
+
queryParameters["$expand"] = requestParameters["$expand"];
|
|
33127
|
+
}
|
|
33128
|
+
if (requestParameters["$filter"] != null) {
|
|
33129
|
+
queryParameters["$filter"] = requestParameters["$filter"];
|
|
33130
|
+
}
|
|
33131
|
+
if (requestParameters["$orderby"] != null) {
|
|
33132
|
+
queryParameters["$orderby"] = requestParameters["$orderby"];
|
|
33133
|
+
}
|
|
33134
|
+
if (requestParameters["$top"] != null) {
|
|
33135
|
+
queryParameters["$top"] = requestParameters["$top"];
|
|
33136
|
+
}
|
|
33137
|
+
if (requestParameters["$skip"] != null) {
|
|
33138
|
+
queryParameters["$skip"] = requestParameters["$skip"];
|
|
33139
|
+
}
|
|
33140
|
+
if (requestParameters["$count"] != null) {
|
|
33141
|
+
queryParameters["$count"] = requestParameters["$count"];
|
|
33142
|
+
}
|
|
33143
|
+
const headerParameters = {};
|
|
33144
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
33145
|
+
headerParameters["Authorization"] = await this.configuration.accessToken("OAuth2", []);
|
|
33146
|
+
}
|
|
33147
|
+
let urlPath = `/odata/Folders/UiPath.Server.Configuration.OData.GetCredentialStoresForFolder(key={key})`;
|
|
33148
|
+
urlPath = urlPath.replace(`{${"key"}}`, encodeURIComponent(String(requestParameters["key"])));
|
|
33149
|
+
const response = await this.request({
|
|
33150
|
+
path: urlPath,
|
|
33151
|
+
method: "GET",
|
|
33152
|
+
headers: headerParameters,
|
|
33153
|
+
query: queryParameters
|
|
33154
|
+
}, initOverrides);
|
|
33155
|
+
return new JSONApiResponse3(response, (jsonValue) => ODataValueOfIEnumerableOfCredentialStoreFolderDtoFromJSON(jsonValue));
|
|
33156
|
+
}
|
|
33157
|
+
async foldersGetCredentialStoresForFolderByKey(requestParameters, initOverrides) {
|
|
33158
|
+
const response = await this.foldersGetCredentialStoresForFolderByKeyRaw(requestParameters, initOverrides);
|
|
33159
|
+
return await response.value();
|
|
33160
|
+
}
|
|
32317
33161
|
async foldersGetEntitiesSummaryByFolderidRaw(requestParameters, initOverrides) {
|
|
32318
33162
|
if (requestParameters["folderId"] == null) {
|
|
32319
33163
|
throw new RequiredError3("folderId", 'Required parameter "folderId" was null or undefined when calling foldersGetEntitiesSummaryByFolderid().');
|
|
@@ -32960,6 +33804,30 @@ class FoldersApi extends BaseAPI3 {
|
|
|
32960
33804
|
const response = await this.foldersPutByIdRaw(requestParameters, initOverrides);
|
|
32961
33805
|
return await response.value();
|
|
32962
33806
|
}
|
|
33807
|
+
async foldersRemoveCredentialStoresFromFolderByIdRaw(requestParameters, initOverrides) {
|
|
33808
|
+
if (requestParameters["key"] == null) {
|
|
33809
|
+
throw new RequiredError3("key", 'Required parameter "key" was null or undefined when calling foldersRemoveCredentialStoresFromFolderById().');
|
|
33810
|
+
}
|
|
33811
|
+
const queryParameters = {};
|
|
33812
|
+
const headerParameters = {};
|
|
33813
|
+
headerParameters["Content-Type"] = "application/json;odata.metadata=minimal;odata.streaming=true";
|
|
33814
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
33815
|
+
headerParameters["Authorization"] = await this.configuration.accessToken("OAuth2", []);
|
|
33816
|
+
}
|
|
33817
|
+
let urlPath = `/odata/Folders({key})/UiPath.Server.Configuration.OData.RemoveCredentialStoresFromFolder`;
|
|
33818
|
+
urlPath = urlPath.replace(`{${"key"}}`, encodeURIComponent(String(requestParameters["key"])));
|
|
33819
|
+
const response = await this.request({
|
|
33820
|
+
path: urlPath,
|
|
33821
|
+
method: "POST",
|
|
33822
|
+
headers: headerParameters,
|
|
33823
|
+
query: queryParameters,
|
|
33824
|
+
body: RemoveCredentialStoresFromFolderRequestToJSON(requestParameters["body"])
|
|
33825
|
+
}, initOverrides);
|
|
33826
|
+
return new VoidApiResponse3(response);
|
|
33827
|
+
}
|
|
33828
|
+
async foldersRemoveCredentialStoresFromFolderById(requestParameters, initOverrides) {
|
|
33829
|
+
await this.foldersRemoveCredentialStoresFromFolderByIdRaw(requestParameters, initOverrides);
|
|
33830
|
+
}
|
|
32963
33831
|
async foldersRemoveMachinesFromFolderByIdRaw(requestParameters, initOverrides) {
|
|
32964
33832
|
if (requestParameters["key"] == null) {
|
|
32965
33833
|
throw new RequiredError3("key", 'Required parameter "key" was null or undefined when calling foldersRemoveMachinesFromFolderById().');
|
|
@@ -33072,6 +33940,26 @@ class FoldersApi extends BaseAPI3 {
|
|
|
33072
33940
|
async foldersToggleFolderMachineInherit(requestParameters = {}, initOverrides) {
|
|
33073
33941
|
await this.foldersToggleFolderMachineInheritRaw(requestParameters, initOverrides);
|
|
33074
33942
|
}
|
|
33943
|
+
async foldersUpdateCredentialStoresToFolderAssociationsRaw(requestParameters, initOverrides) {
|
|
33944
|
+
const queryParameters = {};
|
|
33945
|
+
const headerParameters = {};
|
|
33946
|
+
headerParameters["Content-Type"] = "application/json;odata.metadata=minimal;odata.streaming=true";
|
|
33947
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
33948
|
+
headerParameters["Authorization"] = await this.configuration.accessToken("OAuth2", []);
|
|
33949
|
+
}
|
|
33950
|
+
let urlPath = `/odata/Folders/UiPath.Server.Configuration.OData.UpdateCredentialStoresToFolderAssociations`;
|
|
33951
|
+
const response = await this.request({
|
|
33952
|
+
path: urlPath,
|
|
33953
|
+
method: "POST",
|
|
33954
|
+
headers: headerParameters,
|
|
33955
|
+
query: queryParameters,
|
|
33956
|
+
body: UpdateCredentialStoresToFolderAssociationsRequestToJSON(requestParameters["body"])
|
|
33957
|
+
}, initOverrides);
|
|
33958
|
+
return new VoidApiResponse3(response);
|
|
33959
|
+
}
|
|
33960
|
+
async foldersUpdateCredentialStoresToFolderAssociations(requestParameters = {}, initOverrides) {
|
|
33961
|
+
await this.foldersUpdateCredentialStoresToFolderAssociationsRaw(requestParameters, initOverrides);
|
|
33962
|
+
}
|
|
33075
33963
|
async foldersUpdateMachinesToFolderAssociationsRaw(requestParameters, initOverrides) {
|
|
33076
33964
|
const queryParameters = {};
|
|
33077
33965
|
const headerParameters = {};
|
|
@@ -33122,6 +34010,12 @@ async function createApiClient(ApiClass, options) {
|
|
|
33122
34010
|
const config = await createOrchestratorConfig(options);
|
|
33123
34011
|
return new ApiClass(config);
|
|
33124
34012
|
}
|
|
34013
|
+
// ../orchestrator-sdk/src/knowledge-bundles.ts
|
|
34014
|
+
var KB_INLINE_LIMITS = {
|
|
34015
|
+
maxObjectBytes: 16 * 1024 * 1024,
|
|
34016
|
+
maxBodyBytes: 100 * 1024 * 1024,
|
|
34017
|
+
maxParts: 1e4
|
|
34018
|
+
};
|
|
33125
34019
|
// src/commands/perf-scenario-manage.ts
|
|
33126
34020
|
var ROBOT_TYPE_TO_RUNTIME_TYPE = {
|
|
33127
34021
|
standard: RuntimeType.NUMBER_0,
|
|
@@ -34230,6 +35124,24 @@ function toClearProjectFolderRequest(projectId) {
|
|
|
34230
35124
|
uiPathTestManagementHubTestManagementAbstractionsDTOsFolderKeyRequestModel: { folderKey: null }
|
|
34231
35125
|
};
|
|
34232
35126
|
}
|
|
35127
|
+
function toUpdateProjectSettingsRequest(projectId, projectTimeZone) {
|
|
35128
|
+
return {
|
|
35129
|
+
projectId,
|
|
35130
|
+
uiPathTestManagementHubTestManagementAbstractionsDTOsUpdateProjectSettingsRequest: { projectTimeZone }
|
|
35131
|
+
};
|
|
35132
|
+
}
|
|
35133
|
+
function toPatchExecutionNameFormatRequest(projectId, executionNameFormat) {
|
|
35134
|
+
return {
|
|
35135
|
+
projectId,
|
|
35136
|
+
microsoftAspNetCoreJsonPatchOperationsOperation: [
|
|
35137
|
+
{
|
|
35138
|
+
op: "replace",
|
|
35139
|
+
path: "/executionNameFormat",
|
|
35140
|
+
value: executionNameFormat
|
|
35141
|
+
}
|
|
35142
|
+
]
|
|
35143
|
+
};
|
|
35144
|
+
}
|
|
34233
35145
|
|
|
34234
35146
|
// src/mappers/output/user.output.ts
|
|
34235
35147
|
function toOutput4(user) {
|
|
@@ -34280,6 +35192,19 @@ function toOwnersRow(projectKey, projectId, owners) {
|
|
|
34280
35192
|
Owners: (owners ?? []).map(toDirectoryUserOutput)
|
|
34281
35193
|
};
|
|
34282
35194
|
}
|
|
35195
|
+
function toSettingsRow(s) {
|
|
35196
|
+
return {
|
|
35197
|
+
Id: s.id ?? "",
|
|
35198
|
+
ProjectId: s.projectId ?? "",
|
|
35199
|
+
ProjectKey: s.projectPrefix ?? "",
|
|
35200
|
+
TimeZone: s.projectTimeZone ?? null,
|
|
35201
|
+
ExecutionNameFormat: s.executionNameFormat ?? null,
|
|
35202
|
+
MaxNumberOfTestSteps: s.maxNumberOfTestSteps ?? null,
|
|
35203
|
+
FolderKey: s.folderKey ?? null,
|
|
35204
|
+
GovernanceEnabled: s.governanceEnabled ?? false,
|
|
35205
|
+
GovernanceSettings: s.governanceSettings ?? null
|
|
35206
|
+
};
|
|
35207
|
+
}
|
|
34283
35208
|
|
|
34284
35209
|
// src/commands/project.ts
|
|
34285
35210
|
var PROJECT_LIST_EXAMPLES = [
|
|
@@ -34459,6 +35384,86 @@ var PROJECT_LIST_OWNERS_EXAMPLES = [
|
|
|
34459
35384
|
}
|
|
34460
35385
|
}
|
|
34461
35386
|
];
|
|
35387
|
+
var PROJECT_SETTINGS_GET_EXAMPLES = [
|
|
35388
|
+
{
|
|
35389
|
+
Description: "Read a project's settings",
|
|
35390
|
+
Command: "uip tm project settings get --project-key DEMO",
|
|
35391
|
+
Output: {
|
|
35392
|
+
Code: "ProjectSettingsGet",
|
|
35393
|
+
Data: {
|
|
35394
|
+
Id: "d1e2f3a4-0000-0000-0000-000000000001",
|
|
35395
|
+
ProjectId: "a1b2c3d4-0000-0000-0000-000000000001",
|
|
35396
|
+
ProjectKey: "DEMO",
|
|
35397
|
+
TimeZone: "Europe/Bucharest",
|
|
35398
|
+
ExecutionNameFormat: "{Execution.Type} - {TestSet.Name} - {Execution.StartTime|yyyyMMdd.HHmmss}",
|
|
35399
|
+
MaxNumberOfTestSteps: 250,
|
|
35400
|
+
FolderKey: null,
|
|
35401
|
+
GovernanceEnabled: false,
|
|
35402
|
+
GovernanceSettings: null
|
|
35403
|
+
}
|
|
35404
|
+
}
|
|
35405
|
+
}
|
|
35406
|
+
];
|
|
35407
|
+
var PROJECT_SETTINGS_UPDATE_EXAMPLES = [
|
|
35408
|
+
{
|
|
35409
|
+
Description: "Set the project time zone (IANA name)",
|
|
35410
|
+
Command: "uip tm project settings update --project-id a1b2c3d4-0000-0000-0000-000000000001 --time-zone Europe/Bucharest",
|
|
35411
|
+
Output: {
|
|
35412
|
+
Code: "ProjectSettingsUpdate",
|
|
35413
|
+
Data: {
|
|
35414
|
+
ProjectId: "a1b2c3d4-0000-0000-0000-000000000001",
|
|
35415
|
+
TimeZone: "Europe/Bucharest",
|
|
35416
|
+
Result: "Updated"
|
|
35417
|
+
}
|
|
35418
|
+
}
|
|
35419
|
+
},
|
|
35420
|
+
{
|
|
35421
|
+
Description: "Change how test execution names are built, and the time zone, in one call",
|
|
35422
|
+
Command: 'uip tm project settings update --project-key DEMO --time-zone UTC --execution-name-format "{TestSet.Name} - {Execution.StartTime|yyyyMMdd}"',
|
|
35423
|
+
Output: {
|
|
35424
|
+
Code: "ProjectSettingsUpdate",
|
|
35425
|
+
Data: {
|
|
35426
|
+
ProjectId: "a1b2c3d4-0000-0000-0000-000000000001",
|
|
35427
|
+
ProjectKey: "DEMO",
|
|
35428
|
+
TimeZone: "UTC",
|
|
35429
|
+
ExecutionNameFormat: "{TestSet.Name} - {Execution.StartTime|yyyyMMdd}",
|
|
35430
|
+
Result: "Updated"
|
|
35431
|
+
}
|
|
35432
|
+
}
|
|
35433
|
+
}
|
|
35434
|
+
];
|
|
35435
|
+
async function applyProjectTimeZoneAsync(settingsApi, projectId, timeZone) {
|
|
35436
|
+
const [error] = await catchError(settingsApi.projectSettingsUpdateProjectSettings(toUpdateProjectSettingsRequest(projectId, timeZone)));
|
|
35437
|
+
if (!error)
|
|
35438
|
+
return true;
|
|
35439
|
+
const { message, details, errorCode: errorCode2 } = await extractErrorDetails2(error, {
|
|
35440
|
+
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
35441
|
+
});
|
|
35442
|
+
const hint = errorCode2 === "invalid_argument" ? " Time zones are IANA names, not Windows ones — 'Europe/Bucharest', not 'Romance Standard Time'." : "";
|
|
35443
|
+
OutputFormatter.error({
|
|
35444
|
+
Result: RESULTS.Failure,
|
|
35445
|
+
Message: message,
|
|
35446
|
+
Instructions: `${details}${hint}`
|
|
35447
|
+
});
|
|
35448
|
+
processContext.exit(1);
|
|
35449
|
+
return false;
|
|
35450
|
+
}
|
|
35451
|
+
async function applyExecutionNameFormatAsync(settingsApi, projectId, executionNameFormat, timeZoneApplied) {
|
|
35452
|
+
const [error] = await catchError(settingsApi.projectSettingsPatchProjectSettings(toPatchExecutionNameFormatRequest(projectId, executionNameFormat)));
|
|
35453
|
+
if (!error)
|
|
35454
|
+
return true;
|
|
35455
|
+
const { message, details } = await extractErrorDetails2(error, {
|
|
35456
|
+
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
35457
|
+
});
|
|
35458
|
+
const applied = timeZoneApplied !== undefined ? ` The time zone was already updated to '${timeZoneApplied}'; only the execution name format failed.` : "";
|
|
35459
|
+
OutputFormatter.error({
|
|
35460
|
+
Result: RESULTS.Failure,
|
|
35461
|
+
Message: `${message}${applied}`,
|
|
35462
|
+
Instructions: details
|
|
35463
|
+
});
|
|
35464
|
+
processContext.exit(1);
|
|
35465
|
+
return false;
|
|
35466
|
+
}
|
|
34462
35467
|
var registerProjectCommand = (program2) => {
|
|
34463
35468
|
const projectCmd = program2.command("project").description("Manage Test Manager projects");
|
|
34464
35469
|
projectCmd.command("list").description("List Test Manager projects.").option("--filter <text>", "Filter projects by name").option("--limit <number>", "Number of results per page (default: 50)").option("--offset <number>", "Number of results to skip (default: 0)").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--log-level <level>", "Log verbosity: debug, info, warn, error", "Information").examples(PROJECT_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
@@ -34727,6 +35732,62 @@ var registerProjectCommand = (program2) => {
|
|
|
34727
35732
|
}
|
|
34728
35733
|
OutputFormatter.success(new SuccessOutput("ProjectOwnersList", rows));
|
|
34729
35734
|
});
|
|
35735
|
+
const projectSettingsCmd = projectCmd.command("settings").description("Read and update Test Manager project settings");
|
|
35736
|
+
projectSettingsCmd.command("get").description("Show the settings of a Test Manager project.").addOption(projectKeyOption()).addOption(projectIdOption()).addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--log-level <level>", "Log verbosity: debug, info, warn, error", "Information").examples(PROJECT_SETTINGS_GET_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
35737
|
+
const ctx = await resolveContextWithProject(options);
|
|
35738
|
+
if (!ctx)
|
|
35739
|
+
return;
|
|
35740
|
+
const { tmConfig, projectId } = ctx;
|
|
35741
|
+
const [error, settings] = await catchError(new ProjectSettingsApi(tmConfig).projectSettingsGetProjectSettings({ projectId }));
|
|
35742
|
+
if (error) {
|
|
35743
|
+
const { message, details } = await extractErrorDetails2(error, {
|
|
35744
|
+
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
35745
|
+
});
|
|
35746
|
+
OutputFormatter.error({
|
|
35747
|
+
Result: RESULTS.Failure,
|
|
35748
|
+
Message: message,
|
|
35749
|
+
Instructions: details
|
|
35750
|
+
});
|
|
35751
|
+
processContext.exit(1);
|
|
35752
|
+
return;
|
|
35753
|
+
}
|
|
35754
|
+
OutputFormatter.success(new SuccessOutput("ProjectSettingsGet", toSettingsRow(settings)));
|
|
35755
|
+
});
|
|
35756
|
+
projectSettingsCmd.command("update").description("Update a Test Manager project's time zone or execution name format.").addOption(projectKeyOption()).addOption(projectIdOption()).option("--time-zone <iana-name>", "Project time zone as an IANA name (e.g. Europe/Bucharest, UTC)").option("--execution-name-format <template>", "Template for generated test execution names. Placeholders: {TestSet.Name}, " + "{Execution.Type} (manual|automated|autonomous|exploratory|unspecified), " + "{Execution.StartTime} (add a .NET date format after a pipe, e.g. " + "{Execution.StartTime|yyyyMMdd.HHmmss}), and {TestSet.<custom field name>} for a " + "Test Set custom field. Anything outside braces is literal. The template itself is " + "rejected over 1024 characters, and a shorter one that renders longer than 1024 is " + "truncated with '...'. Default: " + "'{Execution.Type} - {TestSet.Name} - {Execution.StartTime|yyyyMMdd.HHmmss}'").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--log-level <level>", "Log verbosity: debug, info, warn, error", "Information").examples(PROJECT_SETTINGS_UPDATE_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
35757
|
+
const timeZone = options.timeZone;
|
|
35758
|
+
const executionNameFormat = options.executionNameFormat;
|
|
35759
|
+
if (timeZone === undefined && executionNameFormat === undefined) {
|
|
35760
|
+
OutputFormatter.error({
|
|
35761
|
+
Result: RESULTS.ValidationError,
|
|
35762
|
+
ErrorCode: "invalid_argument",
|
|
35763
|
+
Message: "Nothing to update: pass --time-zone, --execution-name-format, or both.",
|
|
35764
|
+
Instructions: "Read the current values with: uip tm project settings get",
|
|
35765
|
+
Retry: "RetryWillNotFix"
|
|
35766
|
+
});
|
|
35767
|
+
processContext.exit(1);
|
|
35768
|
+
return;
|
|
35769
|
+
}
|
|
35770
|
+
const ctx = await resolveContextWithProject(options);
|
|
35771
|
+
if (!ctx)
|
|
35772
|
+
return;
|
|
35773
|
+
const { tmConfig, projectId, projectKey } = ctx;
|
|
35774
|
+
const settingsApi = new ProjectSettingsApi(tmConfig);
|
|
35775
|
+
if (timeZone !== undefined && !await applyProjectTimeZoneAsync(settingsApi, projectId, timeZone)) {
|
|
35776
|
+
return;
|
|
35777
|
+
}
|
|
35778
|
+
if (executionNameFormat !== undefined && !await applyExecutionNameFormatAsync(settingsApi, projectId, executionNameFormat, timeZone)) {
|
|
35779
|
+
return;
|
|
35780
|
+
}
|
|
35781
|
+
OutputFormatter.success(new SuccessOutput("ProjectSettingsUpdate", {
|
|
35782
|
+
ProjectId: projectId,
|
|
35783
|
+
...projectKey !== undefined && { ProjectKey: projectKey },
|
|
35784
|
+
...timeZone !== undefined && { TimeZone: timeZone },
|
|
35785
|
+
...executionNameFormat !== undefined && {
|
|
35786
|
+
ExecutionNameFormat: executionNameFormat
|
|
35787
|
+
},
|
|
35788
|
+
Result: "Updated"
|
|
35789
|
+
}));
|
|
35790
|
+
});
|
|
34730
35791
|
};
|
|
34731
35792
|
|
|
34732
35793
|
// src/commands/report.ts
|
|
@@ -36008,14 +37069,15 @@ async function fetchTestSetPackages(api, projectId, testSetId) {
|
|
|
36008
37069
|
}
|
|
36009
37070
|
|
|
36010
37071
|
// src/mappers/input/testcase.input.ts
|
|
36011
|
-
function toGetPackageEntryPointsRequest(projectId, folderKey, distinctByPackageEntryPointIdAndPackageName, search, top, skip) {
|
|
37072
|
+
function toGetPackageEntryPointsRequest(projectId, folderKey, distinctByPackageEntryPointIdAndPackageName, search, top, skip, packageNames) {
|
|
36012
37073
|
return {
|
|
36013
37074
|
projectId,
|
|
36014
37075
|
folderKey,
|
|
36015
37076
|
search,
|
|
36016
37077
|
top,
|
|
36017
37078
|
skip,
|
|
36018
|
-
distinctByPackageEntryPointIdAndPackageName
|
|
37079
|
+
distinctByPackageEntryPointIdAndPackageName,
|
|
37080
|
+
packageNames
|
|
36019
37081
|
};
|
|
36020
37082
|
}
|
|
36021
37083
|
function toUpdatePackageAutomationRequest(testCaseId, projectId, options) {
|
|
@@ -36583,6 +37645,34 @@ var TESTCASE_LINK_AUTOMATION_EXAMPLES = [
|
|
|
36583
37645
|
Result: "Linked"
|
|
36584
37646
|
}
|
|
36585
37647
|
}
|
|
37648
|
+
},
|
|
37649
|
+
{
|
|
37650
|
+
Description: "Link a Playwright test by its displayed 'specPath > testTitle' name",
|
|
37651
|
+
Command: 'uip tm testcases link-automation --project-key DEMO --test-case-key DEMO:2 --folder-key f0f0f0f0-0000-0000-0000-000000000001 --package-name PwTests --test-name "tests/login.spec.ts > Signs in"',
|
|
37652
|
+
Output: {
|
|
37653
|
+
Code: "TestCaseLinkAutomation",
|
|
37654
|
+
Data: {
|
|
37655
|
+
TestCaseKey: "DEMO:2",
|
|
37656
|
+
PackageName: "PwTests",
|
|
37657
|
+
PackageSource: "Shared",
|
|
37658
|
+
TestName: "tests/login.spec.ts > Signs in",
|
|
37659
|
+
Result: "Linked"
|
|
37660
|
+
}
|
|
37661
|
+
}
|
|
37662
|
+
},
|
|
37663
|
+
{
|
|
37664
|
+
Description: "Link by entry-point id when the name is too long to match: take the PackageEntryPointId from 'list-automations'. --test-name is required but ignored (pass the truncated name shown there); the real name is resolved from the id",
|
|
37665
|
+
Command: 'uip tm testcases link-automation --project-key DEMO --test-case-key DEMO:3 --folder-key f0f0f0f0-0000-0000-0000-000000000001 --package-name PwTests --test-name "tests/checkout.spec.ts > …" --entry-point-id 7a1b2c3d-0000-0000-0000-000000000abc',
|
|
37666
|
+
Output: {
|
|
37667
|
+
Code: "TestCaseLinkAutomation",
|
|
37668
|
+
Data: {
|
|
37669
|
+
TestCaseKey: "DEMO:3",
|
|
37670
|
+
PackageName: "PwTests",
|
|
37671
|
+
PackageSource: "Shared",
|
|
37672
|
+
TestName: "tests/checkout.spec.ts > Completes checkout end to end",
|
|
37673
|
+
Result: "Linked"
|
|
37674
|
+
}
|
|
37675
|
+
}
|
|
36586
37676
|
}
|
|
36587
37677
|
];
|
|
36588
37678
|
var TESTCASE_LINK_PACKAGE_EXAMPLES = [
|
|
@@ -36943,7 +38033,8 @@ var TESTCASE_LIST_AUTOMATIONS_EXAMPLES = [
|
|
|
36943
38033
|
{
|
|
36944
38034
|
PackageName: "InvoiceTests",
|
|
36945
38035
|
TestName: "SmokeTest",
|
|
36946
|
-
PackageVersion: "1.0.2"
|
|
38036
|
+
PackageVersion: "1.0.2",
|
|
38037
|
+
PackageEntryPointId: "7a1b2c3d-0000-0000-0000-000000000abc"
|
|
36947
38038
|
}
|
|
36948
38039
|
]
|
|
36949
38040
|
}
|
|
@@ -36957,7 +38048,8 @@ var TESTCASE_LIST_AUTOMATIONS_EXAMPLES = [
|
|
|
36957
38048
|
{
|
|
36958
38049
|
PackageName: "InvoiceTests",
|
|
36959
38050
|
TestName: "SmokeTest",
|
|
36960
|
-
PackageVersion: "1.0.2"
|
|
38051
|
+
PackageVersion: "1.0.2",
|
|
38052
|
+
PackageEntryPointId: "7a1b2c3d-0000-0000-0000-000000000abc"
|
|
36961
38053
|
}
|
|
36962
38054
|
]
|
|
36963
38055
|
}
|
|
@@ -36976,14 +38068,13 @@ async function resolveContextOrExit(options) {
|
|
|
36976
38068
|
}
|
|
36977
38069
|
return ctx;
|
|
36978
38070
|
}
|
|
36979
|
-
|
|
36980
|
-
const { message, details } = await extractErrorDetails2(error, {
|
|
36981
|
-
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
36982
|
-
});
|
|
38071
|
+
function emitFailure(message, instructions, errorCode2, retry) {
|
|
36983
38072
|
OutputFormatter.error({
|
|
36984
38073
|
Result: RESULTS.Failure,
|
|
38074
|
+
...errorCode2 ? { ErrorCode: errorCode2 } : {},
|
|
36985
38075
|
Message: message,
|
|
36986
|
-
Instructions:
|
|
38076
|
+
...instructions ? { Instructions: instructions } : {},
|
|
38077
|
+
...retry ? { Retry: retry } : {}
|
|
36987
38078
|
});
|
|
36988
38079
|
processContext.exit(1);
|
|
36989
38080
|
}
|
|
@@ -37242,17 +38333,8 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37242
38333
|
Result: "Deleted"
|
|
37243
38334
|
}));
|
|
37244
38335
|
});
|
|
37245
|
-
testcaseCmd.command("link-automation").description("Link an Orchestrator package automation to a test case.").addOption(projectKeyOption()).addOption(projectIdOption()).requiredOption("--test-case-key <key>", "Test case object key (e.g. DEMO:2)").requiredOption("--folder-key <uuid>", "Orchestrator folder key UUID (from 'uip or folders list')").requiredOption("--package-name <name>", "Orchestrator package identifier (e.g. ProjCSCrossTestCases)").requiredOption("--test-name <name>",
|
|
37246
|
-
const
|
|
37247
|
-
if (authError) {
|
|
37248
|
-
OutputFormatter.error({
|
|
37249
|
-
Result: RESULTS.Failure,
|
|
37250
|
-
Message: authError.message,
|
|
37251
|
-
Instructions: instructionsFor("auth")
|
|
37252
|
-
});
|
|
37253
|
-
processContext.exit(1);
|
|
37254
|
-
return;
|
|
37255
|
-
}
|
|
38336
|
+
testcaseCmd.command("link-automation").description("Link an Orchestrator package automation to a test case.").addOption(projectKeyOption()).addOption(projectIdOption()).requiredOption("--test-case-key <key>", "Test case object key (e.g. DEMO:2)").requiredOption("--folder-key <uuid>", "Orchestrator folder key UUID (from 'uip or folders list')").requiredOption("--package-name <name>", "Orchestrator package identifier (e.g. ProjCSCrossTestCases)").requiredOption("--test-name <name>", `Test case name inside the package: the test name for UiPath packages (e.g. MyDemoTest2), or the displayed 'specPath > testTitle' name for Playwright packages (e.g. "tests/login.spec.ts > Signs in"). Ignored when --entry-point-id is given.`).option("--entry-point-id <uuid>", "Package entry-point id (the PackageEntryPointId from 'list-automations'). Binds directly by id and ignores --test-name; use it when the name is too long to type and shows truncated (with '…') in the listing.").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--log-level <level>", "Log verbosity: debug, info, warn, error", "Information").examples(TESTCASE_LINK_AUTOMATION_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
38337
|
+
const ctx = await resolveContextOrExit(options);
|
|
37256
38338
|
if (!ctx)
|
|
37257
38339
|
return;
|
|
37258
38340
|
const { tmConfig, projectId } = ctx;
|
|
@@ -37265,29 +38347,13 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37265
38347
|
top: 50
|
|
37266
38348
|
}));
|
|
37267
38349
|
if (resolveError) {
|
|
37268
|
-
|
|
37269
|
-
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
37270
|
-
});
|
|
37271
|
-
OutputFormatter.error({
|
|
37272
|
-
Result: result,
|
|
37273
|
-
ErrorCode: errorCode2,
|
|
37274
|
-
Message: message,
|
|
37275
|
-
Instructions: details,
|
|
37276
|
-
Retry: retry
|
|
37277
|
-
});
|
|
37278
|
-
processContext.exit(1);
|
|
38350
|
+
await emitTmFailure(resolveError);
|
|
37279
38351
|
return;
|
|
37280
38352
|
}
|
|
37281
|
-
const
|
|
37282
|
-
const items = pageRecord.data ?? [];
|
|
38353
|
+
const items = page.data ?? [];
|
|
37283
38354
|
const testCase = items.find((tc) => tc.objKey?.toLowerCase() === testCaseKey.toLowerCase());
|
|
37284
38355
|
if (!testCase?.id) {
|
|
37285
|
-
|
|
37286
|
-
Result: RESULTS.Failure,
|
|
37287
|
-
Message: `Test case '${testCaseKey}' not found.`
|
|
37288
|
-
});
|
|
37289
|
-
processContext.exit(1);
|
|
37290
|
-
return;
|
|
38356
|
+
return emitFailure(`Test case '${testCaseKey}' not found.`);
|
|
37291
38357
|
}
|
|
37292
38358
|
if (!isGuid(options.folderKey)) {
|
|
37293
38359
|
OutputFormatter.error({
|
|
@@ -37300,21 +38366,9 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37300
38366
|
processContext.exit(1);
|
|
37301
38367
|
return;
|
|
37302
38368
|
}
|
|
37303
|
-
const [folderApiError, foldersApi] = await catchError(createApiClient(FoldersApi, {
|
|
37304
|
-
tenant: options.tenant
|
|
37305
|
-
}));
|
|
38369
|
+
const [folderApiError, foldersApi] = await catchError(createApiClient(FoldersApi, { tenant: options.tenant }));
|
|
37306
38370
|
if (folderApiError) {
|
|
37307
|
-
|
|
37308
|
-
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
37309
|
-
});
|
|
37310
|
-
OutputFormatter.error({
|
|
37311
|
-
Result: result,
|
|
37312
|
-
ErrorCode: errorCode2,
|
|
37313
|
-
Message: message,
|
|
37314
|
-
Instructions: details,
|
|
37315
|
-
Retry: retry
|
|
37316
|
-
});
|
|
37317
|
-
processContext.exit(1);
|
|
38371
|
+
await emitTmFailure(folderApiError);
|
|
37318
38372
|
return;
|
|
37319
38373
|
}
|
|
37320
38374
|
const [foldersError, foldersResult] = await catchError(foldersApi.foldersGet({
|
|
@@ -37322,82 +38376,70 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37322
38376
|
$top: 1
|
|
37323
38377
|
}));
|
|
37324
38378
|
if (foldersError) {
|
|
37325
|
-
|
|
37326
|
-
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
37327
|
-
});
|
|
37328
|
-
OutputFormatter.error({
|
|
37329
|
-
Result: result,
|
|
37330
|
-
ErrorCode: errorCode2,
|
|
37331
|
-
Message: message,
|
|
37332
|
-
Instructions: details,
|
|
37333
|
-
Retry: retry
|
|
37334
|
-
});
|
|
37335
|
-
processContext.exit(1);
|
|
38379
|
+
await emitTmFailure(foldersError);
|
|
37336
38380
|
return;
|
|
37337
38381
|
}
|
|
37338
38382
|
const folderMatch = foldersResult.value?.[0];
|
|
37339
38383
|
if (!folderMatch?.displayName) {
|
|
37340
|
-
|
|
37341
|
-
Result: RESULTS.Failure,
|
|
37342
|
-
ErrorCode: "not_found",
|
|
37343
|
-
Message: `Folder with key '${options.folderKey}' not found.`,
|
|
37344
|
-
Instructions: "List the folders you can see with 'uip or folders list' and pass one of their Key values.",
|
|
37345
|
-
Retry: "RetryWillNotFix"
|
|
37346
|
-
});
|
|
37347
|
-
processContext.exit(1);
|
|
37348
|
-
return;
|
|
38384
|
+
return emitFailure(`Folder with key '${options.folderKey}' not found.`, "List the folders you can see with 'uip or folders list' and pass one of their Key values.", "not_found", "RetryWillNotFix");
|
|
37349
38385
|
}
|
|
37350
38386
|
const folderDisplayName = folderMatch.displayName;
|
|
37351
|
-
|
|
37352
|
-
if (
|
|
37353
|
-
|
|
37354
|
-
|
|
37355
|
-
|
|
37356
|
-
|
|
37357
|
-
|
|
37358
|
-
|
|
37359
|
-
|
|
37360
|
-
|
|
37361
|
-
|
|
37362
|
-
|
|
37363
|
-
|
|
38387
|
+
let nameSearchTerm = options.testName ?? "";
|
|
38388
|
+
if (nameSearchTerm.includes(" > ")) {
|
|
38389
|
+
nameSearchTerm = nameSearchTerm.split(" > ").pop();
|
|
38390
|
+
}
|
|
38391
|
+
if (!options.entryPointId && nameSearchTerm.includes("…")) {
|
|
38392
|
+
return emitFailure(`Test name '${options.testName}' is truncated (contains '…'), so it cannot be matched. Re-run with --entry-point-id (the PackageEntryPointId from 'list-automations').`);
|
|
38393
|
+
}
|
|
38394
|
+
const wantedName = (options.testName ?? "").toLowerCase();
|
|
38395
|
+
const pageSize = 100;
|
|
38396
|
+
const maxPages = 50;
|
|
38397
|
+
const findEntryPoint = async (filterByPackage, searchTerm, matches2) => {
|
|
38398
|
+
for (let skip = 0;skip < pageSize * maxPages; skip += pageSize) {
|
|
38399
|
+
const [epError, page2] = await catchError(orchestratorApi.orchestratorGetUniquePackageEntryPoints(toGetPackageEntryPointsRequest(projectId, options.folderKey, true, searchTerm, pageSize, skip, filterByPackage ? [options.packageName] : undefined)));
|
|
38400
|
+
if (epError) {
|
|
38401
|
+
await emitTmFailure(epError);
|
|
38402
|
+
return "error";
|
|
38403
|
+
}
|
|
38404
|
+
const rows = page2.data ?? [];
|
|
38405
|
+
const hit = rows.find((ep) => ep.packageName?.toLowerCase() === options.packageName.toLowerCase() && matches2(ep));
|
|
38406
|
+
if (hit)
|
|
38407
|
+
return hit;
|
|
38408
|
+
if (rows.length < pageSize)
|
|
38409
|
+
break;
|
|
38410
|
+
}
|
|
37364
38411
|
return;
|
|
38412
|
+
};
|
|
38413
|
+
const matches = options.entryPointId ? (ep) => ep.packageEntryPointId === options.entryPointId : (ep) => ep.name?.toLowerCase() === wantedName;
|
|
38414
|
+
const terms = options.entryPointId ? [""] : nameSearchTerm !== options.testName ? [nameSearchTerm, options.testName] : [options.testName];
|
|
38415
|
+
let entryPoint;
|
|
38416
|
+
for (const term of terms) {
|
|
38417
|
+
entryPoint = await findEntryPoint(true, term, matches) ?? await findEntryPoint(false, term, matches);
|
|
38418
|
+
if (entryPoint !== undefined)
|
|
38419
|
+
break;
|
|
37365
38420
|
}
|
|
37366
|
-
|
|
37367
|
-
if (!entryPoint) {
|
|
37368
|
-
OutputFormatter.error({
|
|
37369
|
-
Result: RESULTS.Failure,
|
|
37370
|
-
Message: `Test '${options.testName}' not found in package '${options.packageName}' for folder '${options.folderKey}'.`
|
|
37371
|
-
});
|
|
37372
|
-
processContext.exit(1);
|
|
38421
|
+
if (entryPoint === "error")
|
|
37373
38422
|
return;
|
|
38423
|
+
if (!entryPoint) {
|
|
38424
|
+
const missing = options.entryPointId ? `Entry point id '${options.entryPointId}'` : `Test '${options.testName}'`;
|
|
38425
|
+
return emitFailure(`${missing} not found in package '${options.packageName}' for folder '${options.folderKey}'.`);
|
|
37374
38426
|
}
|
|
37375
38427
|
const [updateError] = await catchError(testCasesApi.testCasesUpdateTestCasePackageAutomation(toUpdatePackageAutomationRequest(testCase.id, projectId, {
|
|
37376
38428
|
packageEntryPointUniqueId: entryPoint.packageEntryPointId ?? null,
|
|
37377
38429
|
packageIdentifier: options.packageName,
|
|
37378
|
-
packageEntryPointName:
|
|
38430
|
+
packageEntryPointName: entryPoint.name ?? "",
|
|
37379
38431
|
folderKey: folderMatch.feedType === FolderDtoFeedTypeEnum.Processes ? null : options.folderKey,
|
|
37380
38432
|
packageSourceName: folderDisplayName
|
|
37381
38433
|
})));
|
|
37382
38434
|
if (updateError) {
|
|
37383
|
-
|
|
37384
|
-
forbiddenMessage: TM_FORBIDDEN_MESSAGE
|
|
37385
|
-
});
|
|
37386
|
-
OutputFormatter.error({
|
|
37387
|
-
Result: result,
|
|
37388
|
-
ErrorCode: errorCode2,
|
|
37389
|
-
Message: message,
|
|
37390
|
-
Instructions: details,
|
|
37391
|
-
Retry: retry
|
|
37392
|
-
});
|
|
37393
|
-
processContext.exit(1);
|
|
38435
|
+
await emitTmFailure(updateError);
|
|
37394
38436
|
return;
|
|
37395
38437
|
}
|
|
37396
38438
|
OutputFormatter.success(new SuccessOutput("TestCaseLinkAutomation", {
|
|
37397
38439
|
TestCaseKey: testCaseKey,
|
|
37398
38440
|
PackageName: options.packageName,
|
|
37399
38441
|
PackageSource: folderDisplayName,
|
|
37400
|
-
TestName:
|
|
38442
|
+
TestName: entryPoint.name ?? "",
|
|
37401
38443
|
Result: "Linked"
|
|
37402
38444
|
}));
|
|
37403
38445
|
});
|
|
@@ -37507,7 +38549,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37507
38549
|
microsoftAspNetCoreJsonPatchOperationsOperation: operations
|
|
37508
38550
|
}));
|
|
37509
38551
|
if (patchError) {
|
|
37510
|
-
await
|
|
38552
|
+
await emitTmFailure(patchError);
|
|
37511
38553
|
return;
|
|
37512
38554
|
}
|
|
37513
38555
|
OutputFormatter.success(new SuccessOutput("TestCaseUpdate", {
|
|
@@ -37679,7 +38721,8 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37679
38721
|
const rows = filtered.map((ep) => ({
|
|
37680
38722
|
PackageName: ep.packageName ?? "",
|
|
37681
38723
|
TestName: ep.name ?? "",
|
|
37682
|
-
PackageVersion: ep.packageAppVersion ?? ""
|
|
38724
|
+
PackageVersion: ep.packageAppVersion ?? "",
|
|
38725
|
+
PackageEntryPointId: ep.packageEntryPointId ?? ""
|
|
37683
38726
|
}));
|
|
37684
38727
|
OutputFormatter.success(new SuccessOutput("TestAutomationsList", rows));
|
|
37685
38728
|
});
|
|
@@ -37743,7 +38786,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37743
38786
|
const testStepsApi = new TestStepsApi(tmConfig);
|
|
37744
38787
|
const [error, steps] = await catchError(testStepsApi.testStepsGetTestStepsByTestCase(toGetTestStepsByTestCaseRequest(options.testCaseId, projectId)));
|
|
37745
38788
|
if (error) {
|
|
37746
|
-
await
|
|
38789
|
+
await emitTmFailure(error);
|
|
37747
38790
|
return;
|
|
37748
38791
|
}
|
|
37749
38792
|
OutputFormatter.success(new SuccessOutput("TestCaseStepsList", toOutput6(steps ?? [])));
|
|
@@ -37758,7 +38801,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37758
38801
|
const testStepsApi = new TestStepsApi(tmConfig);
|
|
37759
38802
|
const [error, step] = await catchError(testStepsApi.testStepsGetById(toGetByIdRequest6(options.stepId, projectId)));
|
|
37760
38803
|
if (error) {
|
|
37761
|
-
await
|
|
38804
|
+
await emitTmFailure(error);
|
|
37762
38805
|
return;
|
|
37763
38806
|
}
|
|
37764
38807
|
OutputFormatter.success(new SuccessOutput("TestStepGet", toStepOutput(step)));
|
|
@@ -37821,7 +38864,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37821
38864
|
const testStepsApi = new TestStepsApi(tmConfig);
|
|
37822
38865
|
const [getError, current] = await catchError(testStepsApi.testStepsGetById(toGetByIdRequest6(options.stepId, projectId)));
|
|
37823
38866
|
if (getError) {
|
|
37824
|
-
await
|
|
38867
|
+
await emitTmFailure(getError);
|
|
37825
38868
|
return;
|
|
37826
38869
|
}
|
|
37827
38870
|
const merged = { ...current };
|
|
@@ -37835,7 +38878,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37835
38878
|
merged.clipboardData = options.clipboardData;
|
|
37836
38879
|
const [updateError] = await catchError(testStepsApi.testStepsUpdate(toUpdateRequest4(options.stepId, projectId, merged)));
|
|
37837
38880
|
if (updateError) {
|
|
37838
|
-
await
|
|
38881
|
+
await emitTmFailure(updateError);
|
|
37839
38882
|
return;
|
|
37840
38883
|
}
|
|
37841
38884
|
OutputFormatter.success(new SuccessOutput("TestStepUpdate", {
|
|
@@ -37862,7 +38905,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37862
38905
|
const testStepsApi = new TestStepsApi(tmConfig);
|
|
37863
38906
|
const [error] = await catchError(testStepsApi.testStepsMoveToPosition(toMoveRequest(options.stepId, projectId, targetPosition)));
|
|
37864
38907
|
if (error) {
|
|
37865
|
-
await
|
|
38908
|
+
await emitTmFailure(error);
|
|
37866
38909
|
return;
|
|
37867
38910
|
}
|
|
37868
38911
|
OutputFormatter.success(new SuccessOutput("TestStepMove", {
|
|
@@ -37881,7 +38924,7 @@ var registerTestcaseCommand = (program2) => {
|
|
|
37881
38924
|
const testStepsApi = new TestStepsApi(tmConfig);
|
|
37882
38925
|
const [error] = await catchError(testStepsApi.testStepsDelete(toDeleteRequest2(options.stepId, projectId)));
|
|
37883
38926
|
if (error) {
|
|
37884
|
-
await
|
|
38927
|
+
await emitTmFailure(error);
|
|
37885
38928
|
return;
|
|
37886
38929
|
}
|
|
37887
38930
|
OutputFormatter.success(new SuccessOutput("TestStepDelete", {
|
|
@@ -39650,4 +40693,4 @@ var registerCommands = async (program2) => {
|
|
|
39650
40693
|
|
|
39651
40694
|
export { Command, metadata, registerCommands };
|
|
39652
40695
|
|
|
39653
|
-
//# debugId=
|
|
40696
|
+
//# debugId=A6E7682C537E6E0D64756E2164756E21
|