@uipath/solution-sdk 1.200.0-preview.120 → 1.201.0-preview.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +8182 -7782
- package/dist/resources/index.js +7282 -7031
- package/dist/solution-auth.js +120 -18
- package/dist/src/index.d.ts +2 -1
- package/dist/src/project-debug-status.d.ts +70 -0
- package/dist/src/search-package-versions.d.ts +5 -4
- package/dist/src/solution-file.d.ts +3 -1
- package/dist/src/solution-info.d.ts +43 -0
- package/dist/src/upload-service.d.ts +9 -0
- package/package.json +2 -2
package/dist/solution-auth.js
CHANGED
|
@@ -30,6 +30,19 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
30
30
|
return to;
|
|
31
31
|
};
|
|
32
32
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
|
+
var __returnValue = (v) => v;
|
|
34
|
+
function __exportSetter(name, newValue) {
|
|
35
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
36
|
+
}
|
|
37
|
+
var __export = (target, all) => {
|
|
38
|
+
for (var name in all)
|
|
39
|
+
__defProp(target, name, {
|
|
40
|
+
get: all[name],
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
set: __exportSetter.bind(all, name)
|
|
44
|
+
});
|
|
45
|
+
};
|
|
33
46
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
34
47
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
35
48
|
|
|
@@ -417,6 +430,12 @@ var init_is_in_ssh = __esm(() => {
|
|
|
417
430
|
});
|
|
418
431
|
|
|
419
432
|
// ../../node_modules/open/index.js
|
|
433
|
+
var exports_open = {};
|
|
434
|
+
__export(exports_open, {
|
|
435
|
+
openApp: () => openApp,
|
|
436
|
+
default: () => open_default,
|
|
437
|
+
apps: () => apps
|
|
438
|
+
});
|
|
420
439
|
import process8 from "node:process";
|
|
421
440
|
import path from "node:path";
|
|
422
441
|
import { fileURLToPath } from "node:url";
|
|
@@ -650,6 +669,21 @@ var fallbackAttemptSymbol, __dirname2, localXdgOpenPath, platform, arch, tryEach
|
|
|
650
669
|
...options,
|
|
651
670
|
target
|
|
652
671
|
});
|
|
672
|
+
}, openApp = (name, options) => {
|
|
673
|
+
if (typeof name !== "string" && !Array.isArray(name)) {
|
|
674
|
+
throw new TypeError("Expected a valid `name`");
|
|
675
|
+
}
|
|
676
|
+
const { arguments: appArguments = [] } = options ?? {};
|
|
677
|
+
if (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {
|
|
678
|
+
throw new TypeError("Expected `appArguments` as Array type");
|
|
679
|
+
}
|
|
680
|
+
return baseOpen({
|
|
681
|
+
...options,
|
|
682
|
+
app: {
|
|
683
|
+
name,
|
|
684
|
+
arguments: appArguments
|
|
685
|
+
}
|
|
686
|
+
});
|
|
653
687
|
}, apps, open_default;
|
|
654
688
|
var init_open = __esm(() => {
|
|
655
689
|
init_wsl_utils();
|
|
@@ -729,7 +763,8 @@ class NodeFileSystem {
|
|
|
729
763
|
};
|
|
730
764
|
utils = {
|
|
731
765
|
open: async (url) => {
|
|
732
|
-
await
|
|
766
|
+
const { default: open2 } = await Promise.resolve().then(() => (init_open(), exports_open));
|
|
767
|
+
await open2(url);
|
|
733
768
|
}
|
|
734
769
|
};
|
|
735
770
|
async readFile(path3, options) {
|
|
@@ -924,9 +959,7 @@ class NodeFileSystem {
|
|
|
924
959
|
}
|
|
925
960
|
}
|
|
926
961
|
var LOCK_HEARTBEAT_MS = 5000, LOCK_STALE_MS = 15000, LOCK_MAX_WAIT_MS = 20000, LOCK_MAX_HOLD_MS = 60000, LOCK_RETRY_MIN_MS = 100, LOCK_RETRY_JITTER_MS = 200;
|
|
927
|
-
var init_node =
|
|
928
|
-
init_open();
|
|
929
|
-
});
|
|
962
|
+
var init_node = () => {};
|
|
930
963
|
// ../filesystem/src/index.ts
|
|
931
964
|
var fsInstance, getFileSystem = () => fsInstance;
|
|
932
965
|
var init_src = __esm(() => {
|
|
@@ -934,10 +967,6 @@ var init_src = __esm(() => {
|
|
|
934
967
|
init_node();
|
|
935
968
|
fsInstance = new NodeFileSystem;
|
|
936
969
|
});
|
|
937
|
-
// ../auth/src/server.ts
|
|
938
|
-
var init_server = __esm(() => {
|
|
939
|
-
init_constants();
|
|
940
|
-
});
|
|
941
970
|
|
|
942
971
|
// ../auth/src/config.ts
|
|
943
972
|
init_constants();
|
|
@@ -1177,6 +1206,67 @@ var getTokenExpiration = (accessToken) => {
|
|
|
1177
1206
|
}
|
|
1178
1207
|
};
|
|
1179
1208
|
|
|
1209
|
+
// ../auth/src/sessionIdentity.ts
|
|
1210
|
+
var parseAuthFlow = (value) => value === "authorization_code" || value === "client_credentials" || value === "federated_credentials" ? value : undefined;
|
|
1211
|
+
var decodeClaims = (accessToken) => {
|
|
1212
|
+
const [error, claims] = catchError(() => parseJWT(accessToken));
|
|
1213
|
+
return error ? undefined : claims;
|
|
1214
|
+
};
|
|
1215
|
+
var asString = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
|
|
1216
|
+
var resolveIdentityType = (claims, authFlow, email) => {
|
|
1217
|
+
const subType = asString(claims?.sub_type);
|
|
1218
|
+
if (subType) {
|
|
1219
|
+
return subType.startsWith("service") ? "Application" : "User";
|
|
1220
|
+
}
|
|
1221
|
+
if (authFlow) {
|
|
1222
|
+
return authFlow === "authorization_code" ? "User" : "Application";
|
|
1223
|
+
}
|
|
1224
|
+
if (email)
|
|
1225
|
+
return "User";
|
|
1226
|
+
if (asString(claims?.client_id) && !asString(claims?.sub)) {
|
|
1227
|
+
return "Application";
|
|
1228
|
+
}
|
|
1229
|
+
return;
|
|
1230
|
+
};
|
|
1231
|
+
var looksLikeEmail = (value) => value?.includes("@") ?? false;
|
|
1232
|
+
var pickEmail = (claims) => {
|
|
1233
|
+
for (const candidate of [claims?.email, claims?.preferred_username]) {
|
|
1234
|
+
const value = asString(candidate);
|
|
1235
|
+
if (looksLikeEmail(value))
|
|
1236
|
+
return value;
|
|
1237
|
+
}
|
|
1238
|
+
return;
|
|
1239
|
+
};
|
|
1240
|
+
var pickName = (claims) => {
|
|
1241
|
+
const username = asString(claims?.preferred_username);
|
|
1242
|
+
return asString(claims?.name) ?? (looksLikeEmail(username) ? undefined : username);
|
|
1243
|
+
};
|
|
1244
|
+
var resolveSessionIdentity = (accessToken, authFlow) => {
|
|
1245
|
+
const claims = accessToken ? decodeClaims(accessToken) : undefined;
|
|
1246
|
+
const email = pickEmail(claims);
|
|
1247
|
+
const type = resolveIdentityType(claims, authFlow, email);
|
|
1248
|
+
if (!type)
|
|
1249
|
+
return;
|
|
1250
|
+
const identity = { type };
|
|
1251
|
+
if (authFlow)
|
|
1252
|
+
identity.authFlow = authFlow;
|
|
1253
|
+
if (type === "User") {
|
|
1254
|
+
const userId = asString(claims?.sub);
|
|
1255
|
+
if (userId)
|
|
1256
|
+
identity.userId = userId;
|
|
1257
|
+
if (email)
|
|
1258
|
+
identity.userEmail = email;
|
|
1259
|
+
const name = pickName(claims);
|
|
1260
|
+
if (name)
|
|
1261
|
+
identity.userName = name;
|
|
1262
|
+
return identity;
|
|
1263
|
+
}
|
|
1264
|
+
const clientId = asString(claims?.client_id);
|
|
1265
|
+
if (clientId)
|
|
1266
|
+
identity.clientId = clientId;
|
|
1267
|
+
return identity;
|
|
1268
|
+
};
|
|
1269
|
+
|
|
1180
1270
|
// ../auth/src/envAuth.ts
|
|
1181
1271
|
var ENV_AUTH_ENABLE_VAR = "UIPATH_CLI_ENABLE_ENV_AUTH";
|
|
1182
1272
|
var ENFORCE_ROBOT_AUTH_VAR = "UIPATH_CLI_ENFORCE_ROBOT_AUTH";
|
|
@@ -1226,6 +1316,7 @@ var readAuthFromEnv = () => {
|
|
|
1226
1316
|
}
|
|
1227
1317
|
const expiration = getTokenExpiration(accessToken);
|
|
1228
1318
|
const loginStatus = expiration && expiration <= new Date ? "Expired" : "Logged in";
|
|
1319
|
+
const identity = resolveSessionIdentity(accessToken);
|
|
1229
1320
|
return {
|
|
1230
1321
|
loginStatus,
|
|
1231
1322
|
accessToken,
|
|
@@ -1235,7 +1326,8 @@ var readAuthFromEnv = () => {
|
|
|
1235
1326
|
tenantName,
|
|
1236
1327
|
tenantId,
|
|
1237
1328
|
expiration,
|
|
1238
|
-
source: "env" /*
|
|
1329
|
+
source: "env-vars" /* EnvironmentVariables */,
|
|
1330
|
+
...identity ? { identity } : {}
|
|
1239
1331
|
};
|
|
1240
1332
|
};
|
|
1241
1333
|
|
|
@@ -1488,6 +1580,9 @@ var refreshAccessToken = async ({
|
|
|
1488
1580
|
return { accessToken: newAccessToken, refreshToken: newRefreshToken };
|
|
1489
1581
|
};
|
|
1490
1582
|
|
|
1583
|
+
// ../auth/src/types.ts
|
|
1584
|
+
var AUTH_FLOW_ENV_VAR = "UIPATH_AUTH_FLOW";
|
|
1585
|
+
|
|
1491
1586
|
// ../auth/src/utils/envFile.ts
|
|
1492
1587
|
init_src();
|
|
1493
1588
|
init_constants();
|
|
@@ -1855,7 +1950,8 @@ async function buildFileStatus(tokens, credentials, globalHint) {
|
|
|
1855
1950
|
tenantName: credentials.UIPATH_TENANT_NAME,
|
|
1856
1951
|
tenantId: credentials.UIPATH_TENANT_ID,
|
|
1857
1952
|
expiration: tokens.expiration,
|
|
1858
|
-
source: "
|
|
1953
|
+
source: "saved-login" /* SavedLogin */,
|
|
1954
|
+
...identityFields(tokens.accessToken, credentials),
|
|
1859
1955
|
...tokens.persistenceWarning ? { hint: tokens.persistenceWarning, persistenceFailed: true } : {},
|
|
1860
1956
|
...tokens.lockReleaseFailed ? { lockReleaseFailed: true } : {},
|
|
1861
1957
|
...tokens.tokenRefresh ? { tokenRefresh: tokens.tokenRefresh } : {}
|
|
@@ -1868,7 +1964,12 @@ async function buildFileStatus(tokens, credentials, globalHint) {
|
|
|
1868
1964
|
}
|
|
1869
1965
|
return result;
|
|
1870
1966
|
}
|
|
1967
|
+
function identityFields(accessToken, credentials) {
|
|
1968
|
+
const identity = resolveSessionIdentity(accessToken, parseAuthFlow(credentials[AUTH_FLOW_ENV_VAR]));
|
|
1969
|
+
return identity ? { identity } : {};
|
|
1970
|
+
}
|
|
1871
1971
|
function buildRobotStatus(robotCreds) {
|
|
1972
|
+
const identity = resolveSessionIdentity(robotCreds.accessToken);
|
|
1872
1973
|
return {
|
|
1873
1974
|
loginStatus: "Logged in",
|
|
1874
1975
|
accessToken: robotCreds.accessToken,
|
|
@@ -1879,7 +1980,8 @@ function buildRobotStatus(robotCreds) {
|
|
|
1879
1980
|
tenantId: robotCreds.tenantId,
|
|
1880
1981
|
issuer: robotCreds.issuer,
|
|
1881
1982
|
expiration: getTokenExpiration(robotCreds.accessToken),
|
|
1882
|
-
source: "robot" /* Robot
|
|
1983
|
+
source: "robot" /* Robot */,
|
|
1984
|
+
...identity ? { identity } : {}
|
|
1883
1985
|
};
|
|
1884
1986
|
}
|
|
1885
1987
|
var isFileNotFoundError = (error) => {
|
|
@@ -1930,7 +2032,8 @@ async function circuitBreakerShortCircuit(ctx) {
|
|
|
1930
2032
|
tenantName: credentials.UIPATH_TENANT_NAME,
|
|
1931
2033
|
tenantId: credentials.UIPATH_TENANT_ID,
|
|
1932
2034
|
expiration,
|
|
1933
|
-
source: "
|
|
2035
|
+
source: "saved-login" /* SavedLogin */,
|
|
2036
|
+
...identityFields(accessToken, credentials)
|
|
1934
2037
|
} : {},
|
|
1935
2038
|
hint: globalHint ?? (tokenIsDead ? deadHint : backoffHint),
|
|
1936
2039
|
refreshCircuitOpen: true,
|
|
@@ -1952,7 +2055,8 @@ async function lockAcquireFailureStatus(ctx, error) {
|
|
|
1952
2055
|
tenantName: ctx.credentials.UIPATH_TENANT_NAME,
|
|
1953
2056
|
tenantId: ctx.credentials.UIPATH_TENANT_ID,
|
|
1954
2057
|
expiration: ctx.expiration,
|
|
1955
|
-
source: "
|
|
2058
|
+
source: "saved-login" /* SavedLogin */,
|
|
2059
|
+
...identityFields(ctx.accessToken, ctx.credentials),
|
|
1956
2060
|
hint: globalHint,
|
|
1957
2061
|
tokenRefresh: {
|
|
1958
2062
|
attempted: false,
|
|
@@ -2152,6 +2256,8 @@ init_constants();
|
|
|
2152
2256
|
|
|
2153
2257
|
// ../auth/src/interactive.ts
|
|
2154
2258
|
init_src();
|
|
2259
|
+
// ../auth/src/tenantSelection.ts
|
|
2260
|
+
var IDENTIFIER_STATUSES = new Set([400, 403, 404]);
|
|
2155
2261
|
|
|
2156
2262
|
// ../auth/src/selectTenant.ts
|
|
2157
2263
|
var TENANT_SELECTION_REQUIRED_CODE = "TENANT_SELECTION_REQUIRED";
|
|
@@ -2162,10 +2268,6 @@ var TENANT_SELECTION_CODES = new Set([
|
|
|
2162
2268
|
]);
|
|
2163
2269
|
// ../auth/src/logout.ts
|
|
2164
2270
|
init_src();
|
|
2165
|
-
|
|
2166
|
-
// ../auth/src/index.ts
|
|
2167
|
-
init_server();
|
|
2168
|
-
|
|
2169
2271
|
// src/solution-auth.ts
|
|
2170
2272
|
async function getSolutionAuthContext(options) {
|
|
2171
2273
|
const ctx = await getAuthContext({
|
|
@@ -2189,4 +2291,4 @@ export {
|
|
|
2189
2291
|
getSolutionAuthContext
|
|
2190
2292
|
};
|
|
2191
2293
|
|
|
2192
|
-
//# debugId=
|
|
2294
|
+
//# debugId=C583A49A0405670664756E2164756E21
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,10 +3,11 @@ export { getAvailablePublishLocationsV2, type PublishLocationType, type PublishL
|
|
|
3
3
|
export * from "../generated/src/index.js";
|
|
4
4
|
export { buildSolutionPackageFromDir, bundleSolution, resolveSolutionDir, } from "./bundle-service";
|
|
5
5
|
export { type AutoInstallClientConfig, type DeploymentAutoInstallRequest, deploymentsAutoInstall, } from "./deployments-auto-install";
|
|
6
|
+
export { getProjectDebugStatus, isDebugProvisioningSucceeded, isDebugProvisioningTerminal, type ProjectDebugStatusClientConfig, type ProjectDebugStatusError, type ProjectDebugStatusResponse, } from "./project-debug-status";
|
|
6
7
|
export { type PackageVersionSearchFilter, type PackageVersionSearchRow, type PackageVersionsClientConfig, searchPackageVersions, } from "./search-package-versions";
|
|
7
8
|
export type { AutoCreatedSolution, ParentSolutionDiscovery, PrepareProjectLocationOptions, PrepareProjectLocationResult, ProjectSolutionRegistration, RegisterProjectOptions, SolutionManifestCreation, } from "./solution-file";
|
|
8
9
|
export { autoScaffoldSolution, createSolutionManifest, findNearestParentUipxFile, findSolutionFile, findSolutionFileUpward, isProjectRegisteredInSolution, normalizeProjectType, prepareProjectLocation, readSolutionManifest, readUipxFile, toPortableRelativePath, tryRegisterProjectInParentSolution, updateSolutionFile, updateUipxSolutionId, } from "./solution-file";
|
|
9
|
-
export { getStudioWebSolutionProjects } from "./solution-info";
|
|
10
|
+
export { getStudioWebSolutionProjects, type ListStudioWebSolutionsOptions, listStudioWebSolutions, type StudioWebSolutionsPage, } from "./solution-info";
|
|
10
11
|
export type { BundleResult, SolutionImportResponse, StudioWebConfig, StudioWebSolutionProject, UipxFile, UipxProject, } from "./types";
|
|
11
12
|
export { importSolution, overwriteSolution, solutionExistsOnStudioWeb, uploadOrOverwriteSolution, } from "./upload-service";
|
|
12
13
|
export { SDK_USER_AGENT } from "./user-agent.js";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solution debug-provisioning status (Automation Solutions).
|
|
3
|
+
*
|
|
4
|
+
* Hand-written wrapper for
|
|
5
|
+
* `GET /api/v1/solutions/{solutionKey}/projects/debug/status`. It is the same
|
|
6
|
+
* endpoint Studio Web's provisioning flow polls when its SignalR
|
|
7
|
+
* `ProjectDebugStatus` event does not arrive in time
|
|
8
|
+
* (`ProvisionSolutionDebugService._pollDebugStatusFallback$`), which makes it
|
|
9
|
+
* the CLI's way to wait for a `debugProjectAsync` that answered
|
|
10
|
+
* `complete: false`.
|
|
11
|
+
*
|
|
12
|
+
* Generating it instead would take three things, none of them available here:
|
|
13
|
+
*
|
|
14
|
+
* 1. `src/scripts/generate-sdk.ts` excludes the whole `/api/v1/solutions/`
|
|
15
|
+
* prefix as "problematic headers", so every path in this namespace is out
|
|
16
|
+
* of scope by configuration — not merely missing. The two solutions/debug
|
|
17
|
+
* paths that *are* in the committed swagger get filtered out for the same
|
|
18
|
+
* reason; the generated client holds no `/api/v1/solutions/*` at all.
|
|
19
|
+
* 2. This path is absent from the committed swagger, which was last refreshed
|
|
20
|
+
* 2026-03-20, and the generator's source URL is auth-gated.
|
|
21
|
+
* 3. Lifting the prefix exclusion means finding out which headers broke the
|
|
22
|
+
* generator in the first place, which nobody wrote down.
|
|
23
|
+
*
|
|
24
|
+
* So this file is a deviation from how the SDKs are meant to work — see
|
|
25
|
+
* `@uipath/orchestrator-sdk`, where every endpoint is generated and the
|
|
26
|
+
* hand-written layer is helpers only. To undo it: refresh the swagger with a
|
|
27
|
+
* valid session, add this path to `explicitlyIncludedPaths`, regenerate, and
|
|
28
|
+
* delete this file.
|
|
29
|
+
*/
|
|
30
|
+
/** Auth/endpoint inputs for {@link getProjectDebugStatus}. */
|
|
31
|
+
export interface ProjectDebugStatusClientConfig {
|
|
32
|
+
/** Tenant-scoped Automation Solutions base path (`.../automationsolutions_`). */
|
|
33
|
+
basePath: string;
|
|
34
|
+
accessToken: string;
|
|
35
|
+
}
|
|
36
|
+
/** One provisioning error, as the status endpoint reports it. */
|
|
37
|
+
export interface ProjectDebugStatusError {
|
|
38
|
+
message: string;
|
|
39
|
+
serviceName?: string;
|
|
40
|
+
resource?: {
|
|
41
|
+
key?: string;
|
|
42
|
+
name?: string;
|
|
43
|
+
kind?: string;
|
|
44
|
+
type?: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Response of the debug status endpoint (mirrors Studio Web's
|
|
49
|
+
* `ProjectDebugInfo`). `status` is open-ended on purpose: the service emits
|
|
50
|
+
* non-terminal statuses while provisioning is in flight, and the poll only
|
|
51
|
+
* acts on the terminal ones ({@link DEBUG_PROVISIONING_TERMINAL_STATUSES}).
|
|
52
|
+
*/
|
|
53
|
+
export interface ProjectDebugStatusResponse {
|
|
54
|
+
sessionId?: string;
|
|
55
|
+
status?: string;
|
|
56
|
+
errors?: ProjectDebugStatusError[];
|
|
57
|
+
internalFolderId?: number | null;
|
|
58
|
+
}
|
|
59
|
+
/** Whether the provisioning session reached any terminal status. */
|
|
60
|
+
export declare const isDebugProvisioningTerminal: (status?: string) => boolean;
|
|
61
|
+
/** Whether the provisioning session finished successfully. */
|
|
62
|
+
export declare const isDebugProvisioningSucceeded: (status?: string) => boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Fetch the provisioning status of a solution debug session.
|
|
65
|
+
*
|
|
66
|
+
* Non-2xx responses throw the generated runtime's {@link ResponseError} so
|
|
67
|
+
* callers' `extractErrorDetails` handling (status + body parsing) works
|
|
68
|
+
* unchanged.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getProjectDebugStatus(config: ProjectDebugStatusClientConfig, solutionKey: string, debugSessionId: string): Promise<ProjectDebugStatusResponse>;
|
|
@@ -35,11 +35,12 @@ export interface PackageVersionSearchRow {
|
|
|
35
35
|
/**
|
|
36
36
|
* Search a package's published versions within a feed.
|
|
37
37
|
*
|
|
38
|
-
* `feedFolderKey` is sent as `X-UIPATH-FolderKey` so results
|
|
39
|
-
* that feed, matching the package search.
|
|
40
|
-
* generated runtime's
|
|
38
|
+
* When `feedFolderKey` is set, it is sent as `X-UIPATH-FolderKey` so results
|
|
39
|
+
* are scoped to that feed, matching the package search. Omitting it searches
|
|
40
|
+
* the tenant feed. Non-2xx responses throw the generated runtime's
|
|
41
|
+
* {@link ResponseError}.
|
|
41
42
|
*/
|
|
42
|
-
export declare function searchPackageVersions(config: PackageVersionsClientConfig, packageKey: string, filter: PackageVersionSearchFilter, feedFolderKey
|
|
43
|
+
export declare function searchPackageVersions(config: PackageVersionsClientConfig, packageKey: string, filter: PackageVersionSearchFilter, feedFolderKey?: string): Promise<{
|
|
43
44
|
count?: number;
|
|
44
45
|
values: PackageVersionSearchRow[];
|
|
45
46
|
}>;
|
|
@@ -11,7 +11,9 @@ import type { UipxFile, UipxProject } from "./types";
|
|
|
11
11
|
* - `AlreadyRegistered` — Project was already in Projects[]; no write performed.
|
|
12
12
|
* - `Skipped` — A candidate solution was found but registration was deliberately
|
|
13
13
|
* not attempted (ambiguous: multiple `.uipx` in same dir, or the
|
|
14
|
-
* project dir sits outside the discovered solution dir
|
|
14
|
+
* project dir sits outside the discovered solution dir, or the
|
|
15
|
+
* project's type cannot live in a solution — see
|
|
16
|
+
* {@link unsupportedSolutionProjectType}).
|
|
15
17
|
* - `Failed` — Registration was attempted and an error occurred (read/write/parse).
|
|
16
18
|
* - `NotInSolution` — No `.uipx` file was found by walking ancestor directories. The
|
|
17
19
|
* project was created in standalone mode. This is the explicit
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Read solution metadata from UiPath Studio Web.
|
|
3
3
|
*/
|
|
4
|
+
import { type PreviewSolutionDto } from "@uipath/studioweb-sdk";
|
|
4
5
|
import type { StudioWebConfig, StudioWebSolutionProject } from "./types";
|
|
5
6
|
/**
|
|
6
7
|
* Fetch the projects of a Studio Web solution
|
|
@@ -14,3 +15,45 @@ import type { StudioWebConfig, StudioWebSolutionProject } from "./types";
|
|
|
14
15
|
* produce a targeted error. Throws on any other non-2xx status.
|
|
15
16
|
*/
|
|
16
17
|
export declare function getStudioWebSolutionProjects(config: StudioWebConfig, organizationName: string, solutionId: string): Promise<StudioWebSolutionProject[] | undefined>;
|
|
18
|
+
/** Options for {@link listStudioWebSolutions}. */
|
|
19
|
+
export interface ListStudioWebSolutionsOptions {
|
|
20
|
+
/** Server-side keyword match against solution and project names. */
|
|
21
|
+
name?: string;
|
|
22
|
+
/** Page size. Studio Web caps a page at 100 rows. */
|
|
23
|
+
limit?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Rows to skip before the first returned one. Paging spans Studio Web's
|
|
26
|
+
* combined solutions + standalone-projects result set (the endpoint pages
|
|
27
|
+
* over both; only the solutions are returned here).
|
|
28
|
+
*/
|
|
29
|
+
skip?: number;
|
|
30
|
+
/** Server column to sort by (e.g. `lastModifiedTime`). */
|
|
31
|
+
sortBy?: string;
|
|
32
|
+
/** Sort direction. */
|
|
33
|
+
sortOrder?: "asc" | "desc";
|
|
34
|
+
}
|
|
35
|
+
/** One page of Studio Web solutions. */
|
|
36
|
+
export interface StudioWebSolutionsPage {
|
|
37
|
+
/** Solutions in this page, verbatim from the Studio Web response. */
|
|
38
|
+
solutions: PreviewSolutionDto[];
|
|
39
|
+
/**
|
|
40
|
+
* Rows the server returned in this page — solutions plus the standalone
|
|
41
|
+
* projects that were dropped. Callers paging with `skip` must advance by
|
|
42
|
+
* this count, not by `solutions.length`.
|
|
43
|
+
*/
|
|
44
|
+
combinedCount: number;
|
|
45
|
+
/**
|
|
46
|
+
* Total matching rows as reported by the server. Counts the combined
|
|
47
|
+
* solutions + standalone-projects result set, not just solutions.
|
|
48
|
+
*/
|
|
49
|
+
totalCount?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* List the current user's Studio Web solutions
|
|
53
|
+
* (`Solution_SearchSolutionsAndProjects` →
|
|
54
|
+
* `GET /api/Solution/SearchSolutionsAndProjects`).
|
|
55
|
+
*
|
|
56
|
+
* The endpoint also returns standalone projects; those are dropped — callers
|
|
57
|
+
* get solutions only. Throws on any non-2xx status.
|
|
58
|
+
*/
|
|
59
|
+
export declare function listStudioWebSolutions(config: StudioWebConfig, organizationName: string, options?: ListStudioWebSolutionsOptions): Promise<StudioWebSolutionsPage>;
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { IFileSystem } from "@uipath/filesystem";
|
|
6
6
|
import type { SolutionImportResponse, StudioWebConfig } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* Escape hatch for very large solutions or unusually slow links:
|
|
9
|
+
* `UIPATH_SOLUTION_UPLOAD_TIMEOUT_MS=300000`. Anything non-numeric or
|
|
10
|
+
* non-positive falls back to the default — the ceiling can be raised, not
|
|
11
|
+
* removed, so the silent hang cannot come back through a typo.
|
|
12
|
+
*
|
|
13
|
+
* Exported for tests only — not re-exported from the package barrel.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveUploadTimeoutMs(): number;
|
|
7
16
|
/**
|
|
8
17
|
* Probe Studio Web for the existence of a solution by id.
|
|
9
18
|
* Returns true on 2xx, false on 404. Throws on any other status so callers
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/solution-sdk",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.201.0-preview.121",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/UiPath/cli.git",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"dist"
|
|
40
40
|
],
|
|
41
41
|
"private": false,
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "c70ccfc0b12e637441d67df1d212b71d7784b5f8"
|
|
43
43
|
}
|