@uipath/apollo-react 7.2.1 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas/components/Guardrails/__fixtures__/classifier-questions.fixtures.d.ts +3 -0
- package/dist/canvas/components/Guardrails/__fixtures__/classifier-questions.fixtures.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/__fixtures__/definitions-wire.fixtures.d.ts +2 -0
- package/dist/canvas/components/Guardrails/__fixtures__/definitions-wire.fixtures.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/__fixtures__/host-copy-baselines.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/classifier-custom-questions-editor.cjs +220 -0
- package/dist/canvas/components/Guardrails/classifier-custom-questions-editor.d.ts +13 -0
- package/dist/canvas/components/Guardrails/classifier-custom-questions-editor.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/classifier-custom-questions-editor.js +186 -0
- package/dist/canvas/components/Guardrails/classifier-question-picker.cjs +316 -0
- package/dist/canvas/components/Guardrails/classifier-question-picker.d.ts +15 -0
- package/dist/canvas/components/Guardrails/classifier-question-picker.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/classifier-question-picker.js +282 -0
- package/dist/canvas/components/Guardrails/classifier-utils.cjs +139 -0
- package/dist/canvas/components/Guardrails/classifier-utils.d.ts +25 -0
- package/dist/canvas/components/Guardrails/classifier-utils.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/classifier-utils.js +87 -0
- package/dist/canvas/components/Guardrails/components/classifier-threshold-slider.cjs +98 -0
- package/dist/canvas/components/Guardrails/components/classifier-threshold-slider.d.ts +9 -0
- package/dist/canvas/components/Guardrails/components/classifier-threshold-slider.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/components/classifier-threshold-slider.js +64 -0
- package/dist/canvas/components/Guardrails/components/parameter-label.d.ts +1 -1
- package/dist/canvas/components/Guardrails/components/parameter-label.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/definitions-copy.cjs +66 -1
- package/dist/canvas/components/Guardrails/definitions-copy.d.ts +1 -0
- package/dist/canvas/components/Guardrails/definitions-copy.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/definitions-copy.js +66 -1
- package/dist/canvas/components/Guardrails/definitions-parse.cjs +66 -1
- package/dist/canvas/components/Guardrails/definitions-parse.d.ts +11 -1
- package/dist/canvas/components/Guardrails/definitions-parse.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/definitions-parse.js +63 -1
- package/dist/canvas/components/Guardrails/definitions-wire.d.ts +11 -0
- package/dist/canvas/components/Guardrails/definitions-wire.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/guardrail-builder.cjs +12 -4
- package/dist/canvas/components/Guardrails/guardrail-builder.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/guardrail-builder.js +12 -4
- package/dist/canvas/components/Guardrails/guardrail-validator-form.cjs +4 -1
- package/dist/canvas/components/Guardrails/guardrail-validator-form.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/guardrail-validator-form.js +4 -1
- package/dist/canvas/components/Guardrails/i18n.cjs +181 -3
- package/dist/canvas/components/Guardrails/i18n.d.ts +39 -0
- package/dist/canvas/components/Guardrails/i18n.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/i18n.js +168 -2
- package/dist/canvas/components/Guardrails/index.cjs +54 -4
- package/dist/canvas/components/Guardrails/index.d.ts +14 -3
- package/dist/canvas/components/Guardrails/index.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/index.js +7 -2
- package/dist/canvas/components/Guardrails/use-classifier-guardrail-parameters.cjs +136 -0
- package/dist/canvas/components/Guardrails/use-classifier-guardrail-parameters.d.ts +18 -0
- package/dist/canvas/components/Guardrails/use-classifier-guardrail-parameters.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/use-classifier-guardrail-parameters.js +102 -0
- package/dist/canvas/components/Guardrails/use-classifier-questions.cjs +97 -0
- package/dist/canvas/components/Guardrails/use-classifier-questions.d.ts +34 -0
- package/dist/canvas/components/Guardrails/use-classifier-questions.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/use-classifier-questions.js +60 -0
- package/dist/canvas/components/Guardrails/use-guardrail-definitions.cjs +8 -81
- package/dist/canvas/components/Guardrails/use-guardrail-definitions.d.ts +2 -8
- package/dist/canvas/components/Guardrails/use-guardrail-definitions.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/use-guardrail-definitions.js +9 -82
- package/dist/canvas/components/Guardrails/use-guardrails-request.cjs +133 -0
- package/dist/canvas/components/Guardrails/use-guardrails-request.d.ts +23 -0
- package/dist/canvas/components/Guardrails/use-guardrails-request.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/use-guardrails-request.js +99 -0
- package/dist/canvas/components/Guardrails/utils.cjs +4 -2
- package/dist/canvas/components/Guardrails/utils.d.ts +4 -1
- package/dist/canvas/components/Guardrails/utils.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/utils.js +4 -2
- package/dist/canvas/locales/en.cjs +1 -1
- package/dist/canvas/locales/en.d.ts.map +1 -1
- package/dist/canvas/locales/en.js +1 -1
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/dist/chat/styles/tailwind.chat.css +1 -1
- package/package.json +2 -2
|
@@ -1,97 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo } from "react";
|
|
2
2
|
import { useGuardrailDefinitionCopy } from "./definitions-copy.js";
|
|
3
3
|
import { enrichGuardrailDefinitions } from "./definitions-enrich.js";
|
|
4
4
|
import { parseGuardrailDefinitions } from "./definitions-parse.js";
|
|
5
|
+
import { useGuardrailsRequest } from "./use-guardrails-request.js";
|
|
5
6
|
const GUARDRAIL_DEFINITIONS_PATH = '/api/execution/guardrails/definitions';
|
|
6
7
|
const EMPTY_RESULT = {
|
|
7
8
|
definitions: [],
|
|
8
9
|
invalid: []
|
|
9
10
|
};
|
|
10
|
-
const NOTHING_SETTLED = {
|
|
11
|
-
key: 'none',
|
|
12
|
-
result: EMPTY_RESULT,
|
|
13
|
-
error: null
|
|
14
|
-
};
|
|
15
11
|
function useGuardrailDefinitions(ctx, options = {}) {
|
|
16
12
|
const { definitions: provided, hiddenValidators, copy: copyOverride, enabled: enabledOption = true } = options;
|
|
17
13
|
const linguiCopy = useGuardrailDefinitionCopy();
|
|
18
14
|
const copy = copyOverride ?? linguiCopy;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
const { data: fetched, loading, error, refetch } = useGuardrailsRequest(ctx, {
|
|
16
|
+
path: GUARDRAIL_DEFINITIONS_PATH,
|
|
17
|
+
endpointName: 'Guardrail definitions',
|
|
18
|
+
parse: parseGuardrailDefinitions,
|
|
19
|
+
empty: EMPTY_RESULT,
|
|
20
|
+
enabled: enabledOption && void 0 === provided
|
|
25
21
|
});
|
|
26
|
-
const request = useMemo(()=>'' === requestKey ? null : JSON.parse(requestKey), [
|
|
27
|
-
requestKey
|
|
28
|
-
]);
|
|
29
|
-
const fetchRef = useRef(ctx?.fetch);
|
|
30
|
-
fetchRef.current = ctx?.fetch;
|
|
31
|
-
const enabled = enabledOption && void 0 === provided && null !== request;
|
|
32
|
-
const [settled, setSettled] = useState(NOTHING_SETTLED);
|
|
33
|
-
const [inFlight, setInFlight] = useState(false);
|
|
34
|
-
const abortRef = useRef(null);
|
|
35
|
-
const isCurrent = enabled && settled.key === requestKey;
|
|
36
|
-
const fetched = isCurrent ? settled.result : EMPTY_RESULT;
|
|
37
|
-
const error = isCurrent ? settled.error : null;
|
|
38
|
-
const loading = enabled && (inFlight || !isCurrent);
|
|
39
|
-
const load = useCallback(async ()=>{
|
|
40
|
-
if (!enabled || null === request) return;
|
|
41
|
-
abortRef.current?.abort();
|
|
42
|
-
const controller = new AbortController();
|
|
43
|
-
abortRef.current = controller;
|
|
44
|
-
const key = requestKey;
|
|
45
|
-
setInFlight(true);
|
|
46
|
-
const base = (request.baseUrl ?? '').replace(/\/$/, '');
|
|
47
|
-
const headers = {
|
|
48
|
-
Accept: 'application/json',
|
|
49
|
-
'X-UiPath-Internal-TenantId': request.tenantId
|
|
50
|
-
};
|
|
51
|
-
if (request.token) headers.Authorization = `Bearer ${request.token}`;
|
|
52
|
-
if (request.accountId) headers['X-UiPath-Internal-AccountId'] = request.accountId;
|
|
53
|
-
Object.assign(headers, request.headers);
|
|
54
|
-
const doFetch = fetchRef.current ?? ((input, init)=>globalThis.fetch(input, init));
|
|
55
|
-
try {
|
|
56
|
-
const response = await doFetch(`${base}${GUARDRAIL_DEFINITIONS_PATH}`, {
|
|
57
|
-
headers,
|
|
58
|
-
signal: controller.signal
|
|
59
|
-
});
|
|
60
|
-
if (!response.ok) throw new Error(`Guardrail definitions API ${response.status} ${response.statusText}`);
|
|
61
|
-
const payload = await response.json();
|
|
62
|
-
if (!controller.signal.aborted) setSettled({
|
|
63
|
-
key,
|
|
64
|
-
result: parseGuardrailDefinitions(payload),
|
|
65
|
-
error: null
|
|
66
|
-
});
|
|
67
|
-
} catch (err) {
|
|
68
|
-
if (err?.name === 'AbortError') return;
|
|
69
|
-
if (!controller.signal.aborted) setSettled((prev)=>({
|
|
70
|
-
key,
|
|
71
|
-
result: prev.key === key ? prev.result : EMPTY_RESULT,
|
|
72
|
-
error: err instanceof Error ? err : new Error(String(err))
|
|
73
|
-
}));
|
|
74
|
-
} finally{
|
|
75
|
-
if (!controller.signal.aborted) setInFlight(false);
|
|
76
|
-
}
|
|
77
|
-
}, [
|
|
78
|
-
enabled,
|
|
79
|
-
request,
|
|
80
|
-
requestKey
|
|
81
|
-
]);
|
|
82
|
-
useEffect(()=>{
|
|
83
|
-
if (!enabled) {
|
|
84
|
-
abortRef.current?.abort();
|
|
85
|
-
setInFlight(false);
|
|
86
|
-
setSettled((prev)=>prev === NOTHING_SETTLED ? prev : NOTHING_SETTLED);
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
load();
|
|
90
|
-
return ()=>abortRef.current?.abort();
|
|
91
|
-
}, [
|
|
92
|
-
enabled,
|
|
93
|
-
load
|
|
94
|
-
]);
|
|
95
22
|
const parsed = useMemo(()=>void 0 === provided ? fetched : parseGuardrailDefinitions(provided), [
|
|
96
23
|
provided,
|
|
97
24
|
fetched
|
|
@@ -115,7 +42,7 @@ function useGuardrailDefinitions(ctx, options = {}) {
|
|
|
115
42
|
inputError: parsed.inputError,
|
|
116
43
|
loading,
|
|
117
44
|
error,
|
|
118
|
-
refetch
|
|
45
|
+
refetch
|
|
119
46
|
};
|
|
120
47
|
}
|
|
121
48
|
export { GUARDRAIL_DEFINITIONS_PATH, useGuardrailDefinitions };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
useGuardrailsRequest: ()=>useGuardrailsRequest
|
|
28
|
+
});
|
|
29
|
+
const external_react_namespaceObject = require("react");
|
|
30
|
+
const NOTHING_SETTLED_KEY = 'none';
|
|
31
|
+
function useGuardrailsRequest(ctx, { path, endpointName, parse, empty, enabled: enabledOption }) {
|
|
32
|
+
const requestKey = null === ctx ? '' : JSON.stringify({
|
|
33
|
+
baseUrl: ctx.baseUrl,
|
|
34
|
+
token: ctx.token,
|
|
35
|
+
tenantId: ctx.tenantId,
|
|
36
|
+
accountId: ctx.accountId,
|
|
37
|
+
headers: ctx.headers
|
|
38
|
+
});
|
|
39
|
+
const request = (0, external_react_namespaceObject.useMemo)(()=>'' === requestKey ? null : JSON.parse(requestKey), [
|
|
40
|
+
requestKey
|
|
41
|
+
]);
|
|
42
|
+
const fetchRef = (0, external_react_namespaceObject.useRef)(ctx?.fetch);
|
|
43
|
+
fetchRef.current = ctx?.fetch;
|
|
44
|
+
const enabled = enabledOption && null !== request;
|
|
45
|
+
const nothingSettled = (0, external_react_namespaceObject.useMemo)(()=>({
|
|
46
|
+
key: NOTHING_SETTLED_KEY,
|
|
47
|
+
data: empty,
|
|
48
|
+
error: null
|
|
49
|
+
}), [
|
|
50
|
+
empty
|
|
51
|
+
]);
|
|
52
|
+
const [settled, setSettled] = (0, external_react_namespaceObject.useState)(nothingSettled);
|
|
53
|
+
const [inFlight, setInFlight] = (0, external_react_namespaceObject.useState)(false);
|
|
54
|
+
const abortRef = (0, external_react_namespaceObject.useRef)(null);
|
|
55
|
+
const isCurrent = enabled && settled.key === requestKey;
|
|
56
|
+
const data = isCurrent ? settled.data : empty;
|
|
57
|
+
const error = isCurrent ? settled.error : null;
|
|
58
|
+
const loading = enabled && (inFlight || !isCurrent);
|
|
59
|
+
const load = (0, external_react_namespaceObject.useCallback)(async ()=>{
|
|
60
|
+
if (!enabled || null === request) return;
|
|
61
|
+
abortRef.current?.abort();
|
|
62
|
+
const controller = new AbortController();
|
|
63
|
+
abortRef.current = controller;
|
|
64
|
+
const key = requestKey;
|
|
65
|
+
setInFlight(true);
|
|
66
|
+
const base = (request.baseUrl ?? '').replace(/\/$/, '');
|
|
67
|
+
const headers = {
|
|
68
|
+
Accept: 'application/json',
|
|
69
|
+
'X-UiPath-Internal-TenantId': request.tenantId
|
|
70
|
+
};
|
|
71
|
+
if (request.token) headers.Authorization = `Bearer ${request.token}`;
|
|
72
|
+
if (request.accountId) headers['X-UiPath-Internal-AccountId'] = request.accountId;
|
|
73
|
+
Object.assign(headers, request.headers);
|
|
74
|
+
const doFetch = fetchRef.current ?? ((input, init)=>globalThis.fetch(input, init));
|
|
75
|
+
try {
|
|
76
|
+
const response = await doFetch(`${base}${path}`, {
|
|
77
|
+
headers,
|
|
78
|
+
signal: controller.signal
|
|
79
|
+
});
|
|
80
|
+
if (!response.ok) throw new Error(`${endpointName} API ${response.status} ${response.statusText}`);
|
|
81
|
+
const payload = await response.json();
|
|
82
|
+
if (!controller.signal.aborted) setSettled({
|
|
83
|
+
key,
|
|
84
|
+
data: parse(payload),
|
|
85
|
+
error: null
|
|
86
|
+
});
|
|
87
|
+
} catch (err) {
|
|
88
|
+
if (err?.name === 'AbortError') return;
|
|
89
|
+
if (!controller.signal.aborted) setSettled((prev)=>({
|
|
90
|
+
key,
|
|
91
|
+
data: prev.key === key ? prev.data : empty,
|
|
92
|
+
error: err instanceof Error ? err : new Error(String(err))
|
|
93
|
+
}));
|
|
94
|
+
} finally{
|
|
95
|
+
if (!controller.signal.aborted) setInFlight(false);
|
|
96
|
+
}
|
|
97
|
+
}, [
|
|
98
|
+
enabled,
|
|
99
|
+
request,
|
|
100
|
+
requestKey,
|
|
101
|
+
path,
|
|
102
|
+
endpointName,
|
|
103
|
+
parse,
|
|
104
|
+
empty
|
|
105
|
+
]);
|
|
106
|
+
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
107
|
+
if (!enabled) {
|
|
108
|
+
abortRef.current?.abort();
|
|
109
|
+
setInFlight(false);
|
|
110
|
+
setSettled((prev)=>prev === nothingSettled ? prev : nothingSettled);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
load();
|
|
114
|
+
return ()=>abortRef.current?.abort();
|
|
115
|
+
}, [
|
|
116
|
+
enabled,
|
|
117
|
+
load,
|
|
118
|
+
nothingSettled
|
|
119
|
+
]);
|
|
120
|
+
return {
|
|
121
|
+
data,
|
|
122
|
+
loading,
|
|
123
|
+
error,
|
|
124
|
+
refetch: load
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
exports.useGuardrailsRequest = __webpack_exports__.useGuardrailsRequest;
|
|
128
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
129
|
+
"useGuardrailsRequest"
|
|
130
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
131
|
+
Object.defineProperty(exports, '__esModule', {
|
|
132
|
+
value: true
|
|
133
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface GuardrailDefinitionsRequestContext {
|
|
2
|
+
baseUrl?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
tenantId: string;
|
|
5
|
+
accountId?: string;
|
|
6
|
+
headers?: Record<string, string>;
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
interface GuardrailsRequestOptions<T> {
|
|
10
|
+
path: string;
|
|
11
|
+
endpointName: string;
|
|
12
|
+
parse: (payload: unknown) => T;
|
|
13
|
+
empty: T;
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function useGuardrailsRequest<T>(ctx: GuardrailDefinitionsRequestContext | null, { path, endpointName, parse, empty, enabled: enabledOption }: GuardrailsRequestOptions<T>): {
|
|
17
|
+
data: T;
|
|
18
|
+
loading: boolean;
|
|
19
|
+
error: Error | null;
|
|
20
|
+
refetch: () => void;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=use-guardrails-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-guardrails-request.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/use-guardrails-request.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kCAAkC;IAEjD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,UAAU,wBAAwB,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;CAClB;AAoBD,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,kCAAkC,GAAG,IAAI,EAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACxF;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA0HzE"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
const NOTHING_SETTLED_KEY = 'none';
|
|
3
|
+
function useGuardrailsRequest(ctx, { path, endpointName, parse, empty, enabled: enabledOption }) {
|
|
4
|
+
const requestKey = null === ctx ? '' : JSON.stringify({
|
|
5
|
+
baseUrl: ctx.baseUrl,
|
|
6
|
+
token: ctx.token,
|
|
7
|
+
tenantId: ctx.tenantId,
|
|
8
|
+
accountId: ctx.accountId,
|
|
9
|
+
headers: ctx.headers
|
|
10
|
+
});
|
|
11
|
+
const request = useMemo(()=>'' === requestKey ? null : JSON.parse(requestKey), [
|
|
12
|
+
requestKey
|
|
13
|
+
]);
|
|
14
|
+
const fetchRef = useRef(ctx?.fetch);
|
|
15
|
+
fetchRef.current = ctx?.fetch;
|
|
16
|
+
const enabled = enabledOption && null !== request;
|
|
17
|
+
const nothingSettled = useMemo(()=>({
|
|
18
|
+
key: NOTHING_SETTLED_KEY,
|
|
19
|
+
data: empty,
|
|
20
|
+
error: null
|
|
21
|
+
}), [
|
|
22
|
+
empty
|
|
23
|
+
]);
|
|
24
|
+
const [settled, setSettled] = useState(nothingSettled);
|
|
25
|
+
const [inFlight, setInFlight] = useState(false);
|
|
26
|
+
const abortRef = useRef(null);
|
|
27
|
+
const isCurrent = enabled && settled.key === requestKey;
|
|
28
|
+
const data = isCurrent ? settled.data : empty;
|
|
29
|
+
const error = isCurrent ? settled.error : null;
|
|
30
|
+
const loading = enabled && (inFlight || !isCurrent);
|
|
31
|
+
const load = useCallback(async ()=>{
|
|
32
|
+
if (!enabled || null === request) return;
|
|
33
|
+
abortRef.current?.abort();
|
|
34
|
+
const controller = new AbortController();
|
|
35
|
+
abortRef.current = controller;
|
|
36
|
+
const key = requestKey;
|
|
37
|
+
setInFlight(true);
|
|
38
|
+
const base = (request.baseUrl ?? '').replace(/\/$/, '');
|
|
39
|
+
const headers = {
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
'X-UiPath-Internal-TenantId': request.tenantId
|
|
42
|
+
};
|
|
43
|
+
if (request.token) headers.Authorization = `Bearer ${request.token}`;
|
|
44
|
+
if (request.accountId) headers['X-UiPath-Internal-AccountId'] = request.accountId;
|
|
45
|
+
Object.assign(headers, request.headers);
|
|
46
|
+
const doFetch = fetchRef.current ?? ((input, init)=>globalThis.fetch(input, init));
|
|
47
|
+
try {
|
|
48
|
+
const response = await doFetch(`${base}${path}`, {
|
|
49
|
+
headers,
|
|
50
|
+
signal: controller.signal
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) throw new Error(`${endpointName} API ${response.status} ${response.statusText}`);
|
|
53
|
+
const payload = await response.json();
|
|
54
|
+
if (!controller.signal.aborted) setSettled({
|
|
55
|
+
key,
|
|
56
|
+
data: parse(payload),
|
|
57
|
+
error: null
|
|
58
|
+
});
|
|
59
|
+
} catch (err) {
|
|
60
|
+
if (err?.name === 'AbortError') return;
|
|
61
|
+
if (!controller.signal.aborted) setSettled((prev)=>({
|
|
62
|
+
key,
|
|
63
|
+
data: prev.key === key ? prev.data : empty,
|
|
64
|
+
error: err instanceof Error ? err : new Error(String(err))
|
|
65
|
+
}));
|
|
66
|
+
} finally{
|
|
67
|
+
if (!controller.signal.aborted) setInFlight(false);
|
|
68
|
+
}
|
|
69
|
+
}, [
|
|
70
|
+
enabled,
|
|
71
|
+
request,
|
|
72
|
+
requestKey,
|
|
73
|
+
path,
|
|
74
|
+
endpointName,
|
|
75
|
+
parse,
|
|
76
|
+
empty
|
|
77
|
+
]);
|
|
78
|
+
useEffect(()=>{
|
|
79
|
+
if (!enabled) {
|
|
80
|
+
abortRef.current?.abort();
|
|
81
|
+
setInFlight(false);
|
|
82
|
+
setSettled((prev)=>prev === nothingSettled ? prev : nothingSettled);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
load();
|
|
86
|
+
return ()=>abortRef.current?.abort();
|
|
87
|
+
}, [
|
|
88
|
+
enabled,
|
|
89
|
+
load,
|
|
90
|
+
nothingSettled
|
|
91
|
+
]);
|
|
92
|
+
return {
|
|
93
|
+
data,
|
|
94
|
+
loading,
|
|
95
|
+
error,
|
|
96
|
+
refetch: load
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export { useGuardrailsRequest };
|
|
@@ -81,7 +81,8 @@ function normalizeGuardrailParameters(parameters, definitions) {
|
|
|
81
81
|
});
|
|
82
82
|
return changed ? next : parameters;
|
|
83
83
|
}
|
|
84
|
-
function syncMapEnumParameters(parameters, definitions) {
|
|
84
|
+
function syncMapEnumParameters(parameters, definitions, options) {
|
|
85
|
+
const leaveUnset = new Set(options?.leaveUnsetIds);
|
|
85
86
|
const selectionBySourceId = new Map();
|
|
86
87
|
for (const param of parameters)if ('enum-list' === param.$parameterType && Array.isArray(param.value)) selectionBySourceId.set(param.id, param.value);
|
|
87
88
|
const defById = new Map(definitions.map((d)=>[
|
|
@@ -102,7 +103,8 @@ function syncMapEnumParameters(parameters, definitions) {
|
|
|
102
103
|
const synced = {};
|
|
103
104
|
for (const key of allowedKeys){
|
|
104
105
|
const persisted = currentMap[key];
|
|
105
|
-
|
|
106
|
+
if ('number' == typeof persisted && Number.isFinite(persisted)) synced[key] = persisted;
|
|
107
|
+
else if (!leaveUnset.has(param.id)) synced[key] = defaults[key] ?? fallback;
|
|
106
108
|
}
|
|
107
109
|
return {
|
|
108
110
|
...param,
|
|
@@ -2,7 +2,10 @@ import type { GuardrailDetectionScope, GuardrailParameterDefinition, GuardrailVa
|
|
|
2
2
|
export declare function coerceParameterValueToType(value: unknown, paramDef: Pick<GuardrailParameterDefinition, 'type' | 'min'>): GuardrailValidatorParameter['value'];
|
|
3
3
|
export declare function seedGuardrailParameters(definitions: GuardrailParameterDefinition[], existing?: GuardrailValidatorParameter[]): GuardrailValidatorParameter[];
|
|
4
4
|
export declare function normalizeGuardrailParameters(parameters: readonly GuardrailValidatorParameter[], definitions: readonly GuardrailParameterDefinition[]): GuardrailValidatorParameter[];
|
|
5
|
-
export declare function syncMapEnumParameters(parameters: GuardrailValidatorParameter[], definitions: GuardrailParameterDefinition[]): GuardrailValidatorParameter[];
|
|
5
|
+
export declare function syncMapEnumParameters(parameters: GuardrailValidatorParameter[], definitions: GuardrailParameterDefinition[], options?: SyncMapEnumParametersOptions): GuardrailValidatorParameter[];
|
|
6
|
+
export interface SyncMapEnumParametersOptions {
|
|
7
|
+
leaveUnsetIds?: readonly string[];
|
|
8
|
+
}
|
|
6
9
|
export declare function dropEmptyOptionalParameters(parameters: readonly GuardrailValidatorParameter[], definitions: readonly GuardrailParameterDefinition[]): GuardrailValidatorParameter[];
|
|
7
10
|
export declare function getOutOfRangeParameterIds(definitions: readonly GuardrailParameterDefinition[], parameters: readonly GuardrailValidatorParameter[]): string[];
|
|
8
11
|
export declare function getRequiredEmptyParameterIds(definitions: readonly GuardrailParameterDefinition[], parameters: readonly GuardrailValidatorParameter[]): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAcjB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,IAAI,CAAC,4BAA4B,EAAE,MAAM,GAAG,KAAK,CAAC,GAC3D,2BAA2B,CAAC,OAAO,CAAC,CAmBtC;AAQD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,4BAA4B,EAAE,EAC3C,QAAQ,CAAC,EAAE,2BAA2B,EAAE,GACvC,2BAA2B,EAAE,CAU/B;AAWD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,SAAS,2BAA2B,EAAE,EAClD,WAAW,EAAE,SAAS,4BAA4B,EAAE,GACnD,2BAA2B,EAAE,CAoB/B;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAcjB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,IAAI,CAAC,4BAA4B,EAAE,MAAM,GAAG,KAAK,CAAC,GAC3D,2BAA2B,CAAC,OAAO,CAAC,CAmBtC;AAQD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,4BAA4B,EAAE,EAC3C,QAAQ,CAAC,EAAE,2BAA2B,EAAE,GACvC,2BAA2B,EAAE,CAU/B;AAWD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,SAAS,2BAA2B,EAAE,EAClD,WAAW,EAAE,SAAS,4BAA4B,EAAE,GACnD,2BAA2B,EAAE,CAoB/B;AAeD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,2BAA2B,EAAE,EACzC,WAAW,EAAE,4BAA4B,EAAE,EAC3C,OAAO,CAAC,EAAE,4BAA4B,GACrC,2BAA2B,EAAE,CA6C/B;AAED,MAAM,WAAW,4BAA4B;IAK3C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAQD,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,SAAS,2BAA2B,EAAE,EAClD,WAAW,EAAE,SAAS,4BAA4B,EAAE,GACnD,2BAA2B,EAAE,CAW/B;AAeD,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,SAAS,4BAA4B,EAAE,EACpD,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,MAAM,EAAE,CA6BV;AAUD,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,SAAS,4BAA4B,EAAE,EACpD,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,MAAM,EAAE,CA+BV;AAED,eAAO,MAAM,sCAAsC,mBAAmB,CAAC;AAQvE,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,SAAS,4BAA4B,EAAE,EACpD,UAAU,EAAE,SAAS,2BAA2B,EAAE,GACjD,uBAAuB,GAAG,SAAS,CAarC"}
|
|
@@ -45,7 +45,8 @@ function normalizeGuardrailParameters(parameters, definitions) {
|
|
|
45
45
|
});
|
|
46
46
|
return changed ? next : parameters;
|
|
47
47
|
}
|
|
48
|
-
function syncMapEnumParameters(parameters, definitions) {
|
|
48
|
+
function syncMapEnumParameters(parameters, definitions, options) {
|
|
49
|
+
const leaveUnset = new Set(options?.leaveUnsetIds);
|
|
49
50
|
const selectionBySourceId = new Map();
|
|
50
51
|
for (const param of parameters)if ('enum-list' === param.$parameterType && Array.isArray(param.value)) selectionBySourceId.set(param.id, param.value);
|
|
51
52
|
const defById = new Map(definitions.map((d)=>[
|
|
@@ -66,7 +67,8 @@ function syncMapEnumParameters(parameters, definitions) {
|
|
|
66
67
|
const synced = {};
|
|
67
68
|
for (const key of allowedKeys){
|
|
68
69
|
const persisted = currentMap[key];
|
|
69
|
-
|
|
70
|
+
if ('number' == typeof persisted && Number.isFinite(persisted)) synced[key] = persisted;
|
|
71
|
+
else if (!leaveUnset.has(param.id)) synced[key] = defaults[key] ?? fallback;
|
|
70
72
|
}
|
|
71
73
|
return {
|
|
72
74
|
...param,
|