@uipath/apollo-react 6.58.3 → 6.60.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/builder-types.d.ts +1 -0
- package/dist/canvas/components/Guardrails/builder-types.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/components/guardrail-field-picker.cjs +227 -0
- package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts +23 -0
- package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/components/guardrail-field-picker.js +193 -0
- package/dist/canvas/components/Guardrails/components/guardrail-rule-card.cjs +276 -0
- package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts +17 -0
- package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/components/guardrail-rule-card.js +242 -0
- package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.cjs +4 -2
- package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts +6 -8
- package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.js +5 -3
- package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.cjs +76 -0
- package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts +13 -0
- package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.js +42 -0
- package/dist/canvas/components/Guardrails/guardrail-rules-section.cjs +159 -0
- package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts +15 -0
- package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/guardrail-rules-section.js +125 -0
- package/dist/canvas/components/Guardrails/i18n.cjs +321 -16
- package/dist/canvas/components/Guardrails/i18n.d.ts +65 -0
- package/dist/canvas/components/Guardrails/i18n.d.ts.map +1 -1
- package/dist/canvas/components/Guardrails/i18n.js +271 -2
- package/dist/canvas/components/Guardrails/index.cjs +72 -4
- package/dist/canvas/components/Guardrails/index.d.ts +13 -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/rules-types.cjs +61 -0
- package/dist/canvas/components/Guardrails/rules-types.d.ts +75 -0
- package/dist/canvas/components/Guardrails/rules-types.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/rules-types.js +27 -0
- package/dist/canvas/components/Guardrails/rules-utils.cjs +213 -0
- package/dist/canvas/components/Guardrails/rules-utils.d.ts +22 -0
- package/dist/canvas/components/Guardrails/rules-utils.d.ts.map +1 -0
- package/dist/canvas/components/Guardrails/rules-utils.js +140 -0
- 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/package.json +2 -2
|
@@ -6,6 +6,7 @@ import { CentralizedGuardrailsSection } from "./centralized-guardrails-section.j
|
|
|
6
6
|
import { EscalateActionFields } from "./components/escalate-action-fields.js";
|
|
7
7
|
import { GuardrailActionSection } from "./components/guardrail-action-section.js";
|
|
8
8
|
import { GuardrailChip, guardrailChipVariants } from "./components/guardrail-chip.js";
|
|
9
|
+
import { GuardrailScopeSelector } from "./components/guardrail-scope-selector.js";
|
|
9
10
|
import { GuardrailStatusBanner } from "./components/guardrail-status-banner.js";
|
|
10
11
|
import { GuardrailStatusChip } from "./components/guardrail-status-chip.js";
|
|
11
12
|
import { MixedScopesBanner } from "./components/mixed-scopes-banner.js";
|
|
@@ -13,14 +14,18 @@ import { CURATED_GUARDRAIL_VALIDATORS, GUARDRAIL_COPY_EN, GUARDRAIL_COPY_EN_MESS
|
|
|
13
14
|
import { enrichGuardrailDefinitions, humanizeGuardrailParameterId, isByoGuardrailDefinition, withGuardrailFolderMetadata } from "./definitions-enrich.js";
|
|
14
15
|
import { parseGuardrailDefinitions } from "./definitions-parse.js";
|
|
15
16
|
import { GuardrailBuilder } from "./guardrail-builder.js";
|
|
17
|
+
import { GuardrailFilterFieldSelector } from "./guardrail-filter-field-selector.js";
|
|
16
18
|
import { GuardrailFormLayout } from "./guardrail-form-layout.js";
|
|
17
19
|
import { GuardrailList } from "./guardrail-list.js";
|
|
18
20
|
import { getGuardrailListChips, getGuardrailListItemId, matchesGuardrailListDefinition, resolveGuardrailListItemState } from "./guardrail-list-utils.js";
|
|
19
21
|
import { GuardrailPalette } from "./guardrail-palette.js";
|
|
20
22
|
import { getGuardrailPaletteItemId, groupGuardrailsForPalette } from "./guardrail-palette-utils.js";
|
|
21
23
|
import { GuardrailRemoveDialog } from "./guardrail-remove-dialog.js";
|
|
24
|
+
import { GuardrailRulesSection } from "./guardrail-rules-section.js";
|
|
22
25
|
import { GuardrailValidatorForm } from "./guardrail-validator-form.js";
|
|
23
|
-
import { CENTRALIZED_GUARDRAILS_EN_LABELS, CENTRALIZED_GUARDRAILS_EN_MESSAGES, GUARDRAIL_ACTION_EN_LABELS, GUARDRAIL_ACTION_LABEL_KEYS, GUARDRAIL_BUILDER_EN_LABELS, GUARDRAIL_FORM_EN_LABELS, GUARDRAIL_LIST_EN_LABELS, GUARDRAIL_LIST_EN_MESSAGES, GUARDRAIL_PALETTE_EN_LABELS, GUARDRAIL_PALETTE_EN_MESSAGES, GUARDRAIL_REMOVE_DIALOG_EN_LABELS, GUARDRAIL_REMOVE_DIALOG_EN_MESSAGES, formatGuardrailFormMessage, resolveCentralizedGuardrailsLabels, resolveGuardrailActionLabels, resolveGuardrailBuilderLabels, resolveGuardrailFormLabels, resolveGuardrailListLabels, resolveGuardrailPaletteLabels, resolveGuardrailRemoveDialogLabels, useCentralizedGuardrailsLabels, useGuardrailActionLabels, useGuardrailBuilderLabels, useGuardrailFormLabels, useGuardrailListLabels, useGuardrailPaletteLabels, useGuardrailRemoveDialogLabels } from "./i18n.js";
|
|
26
|
+
import { CENTRALIZED_GUARDRAILS_EN_LABELS, CENTRALIZED_GUARDRAILS_EN_MESSAGES, GUARDRAIL_ACTION_EN_LABELS, GUARDRAIL_ACTION_LABEL_KEYS, GUARDRAIL_BUILDER_EN_LABELS, GUARDRAIL_FILTER_FIELD_SELECTOR_EN_LABELS, GUARDRAIL_FILTER_FIELD_SELECTOR_LABEL_KEYS, GUARDRAIL_FORM_EN_LABELS, GUARDRAIL_LIST_EN_LABELS, GUARDRAIL_LIST_EN_MESSAGES, GUARDRAIL_PALETTE_EN_LABELS, GUARDRAIL_PALETTE_EN_MESSAGES, GUARDRAIL_REMOVE_DIALOG_EN_LABELS, GUARDRAIL_REMOVE_DIALOG_EN_MESSAGES, GUARDRAIL_RULES_EN_LABELS, GUARDRAIL_RULES_EN_MESSAGES, GUARDRAIL_SCOPE_SELECTOR_EN_LABELS, GUARDRAIL_SCOPE_SELECTOR_LABEL_KEYS, formatGuardrailFormMessage, resolveCentralizedGuardrailsLabels, resolveGuardrailActionLabels, resolveGuardrailBuilderLabels, resolveGuardrailFilterFieldSelectorLabels, resolveGuardrailFormLabels, resolveGuardrailListLabels, resolveGuardrailPaletteLabels, resolveGuardrailRemoveDialogLabels, resolveGuardrailRulesLabels, resolveGuardrailScopeSelectorLabels, useCentralizedGuardrailsLabels, useGuardrailActionLabels, useGuardrailBuilderLabels, useGuardrailFilterFieldSelectorLabels, useGuardrailFormLabels, useGuardrailListLabels, useGuardrailPaletteLabels, useGuardrailRemoveDialogLabels, useGuardrailRulesLabels, useGuardrailScopeSelectorLabels } from "./i18n.js";
|
|
27
|
+
import { GUARDRAIL_RULE_OPERATORS } from "./rules-types.js";
|
|
28
|
+
import { changeGuardrailRuleType, createGuardrailRule, getGuardrailRuleErrorFields, getGuardrailRulesErrorFields, guardrailOperatorTakesValue } from "./rules-utils.js";
|
|
24
29
|
import { GUARDRAIL_DEFINITIONS_PATH, useGuardrailDefinitions } from "./use-guardrail-definitions.js";
|
|
25
30
|
import { dropEmptyOptionalParameters, getOutOfRangeParameterIds, getRequiredEmptyParameterIds, seedGuardrailParameters, syncMapEnumParameters } from "./utils.js";
|
|
26
|
-
export { CENTRALIZED_GUARDRAILS_EN_LABELS, CENTRALIZED_GUARDRAILS_EN_MESSAGES, CURATED_GUARDRAIL_VALIDATORS, CentralizedGuardrailDetails, CentralizedGuardrailsSection, EscalateActionFields, GUARDRAIL_ACTION_EN_LABELS, GUARDRAIL_ACTION_LABEL_KEYS, GUARDRAIL_BUILDER_EN_LABELS, GUARDRAIL_BYO_VALIDATOR_TYPE, GUARDRAIL_COPY_EN, GUARDRAIL_COPY_EN_MESSAGES, GUARDRAIL_DEFINITIONS_PATH, GUARDRAIL_FORM_EN_LABELS, GUARDRAIL_LIST_EN_LABELS, GUARDRAIL_LIST_EN_MESSAGES, GUARDRAIL_PALETTE_EN_LABELS, GUARDRAIL_PALETTE_EN_MESSAGES, GUARDRAIL_REMOVE_DIALOG_EN_LABELS, GUARDRAIL_REMOVE_DIALOG_EN_MESSAGES, GuardrailActionSection, GuardrailBuilder, GuardrailChip, GuardrailFormLayout, GuardrailList, GuardrailPalette, GuardrailRecipientType, GuardrailRemoveDialog, GuardrailStatusBanner, GuardrailStatusChip, GuardrailValidatorForm, MixedScopesBanner, createDefaultGuardrailAction, dropEmptyOptionalParameters, enrichGuardrailDefinitions, findCentralizedBuiltInDefinition, findCentralizedByoDefinition, formatCentralizedAction, formatCentralizedExecutionStage, formatCentralizedScope, formatGuardrailFormMessage, generateGuardrailId, getApplicableCentralizedGuardrails, getCentralizedGuardrailDisplay, getCentralizedGuardrailItemId, getGuardrailActionErrorFields, getGuardrailListChips, getGuardrailListItemId, getGuardrailPaletteItemId, getGuardrailSelectorErrorFields, getOutOfRangeParameterIds, getRequiredEmptyParameterIds, groupGuardrailsForPalette, guardrailChipVariants, humanizeGuardrailParameterId, initGuardrailBuilderFormData, isByoGuardrailDefinition, isCentralizedGuardrailConfigMissing, matchesGuardrailListDefinition, parseGuardrailDefinitions, resolveCentralizedGuardrailParameters, resolveCentralizedGuardrailsLabels, resolveGuardrailActionLabels, resolveGuardrailBuilderLabels, resolveGuardrailFormLabels, resolveGuardrailListItemState, resolveGuardrailListLabels, resolveGuardrailPaletteLabels, resolveGuardrailRemoveDialogLabels, seedGuardrailParameters, syncMapEnumParameters, useCentralizedGuardrailsLabels, useGuardrailActionLabels, useGuardrailBuilderLabels, useGuardrailDefinitionCopy, useGuardrailDefinitions, useGuardrailFormLabels, useGuardrailListLabels, useGuardrailPaletteLabels, useGuardrailRemoveDialogLabels, withGuardrailFolderMetadata };
|
|
31
|
+
export { CENTRALIZED_GUARDRAILS_EN_LABELS, CENTRALIZED_GUARDRAILS_EN_MESSAGES, CURATED_GUARDRAIL_VALIDATORS, CentralizedGuardrailDetails, CentralizedGuardrailsSection, EscalateActionFields, GUARDRAIL_ACTION_EN_LABELS, GUARDRAIL_ACTION_LABEL_KEYS, GUARDRAIL_BUILDER_EN_LABELS, GUARDRAIL_BYO_VALIDATOR_TYPE, GUARDRAIL_COPY_EN, GUARDRAIL_COPY_EN_MESSAGES, GUARDRAIL_DEFINITIONS_PATH, GUARDRAIL_FILTER_FIELD_SELECTOR_EN_LABELS, GUARDRAIL_FILTER_FIELD_SELECTOR_LABEL_KEYS, GUARDRAIL_FORM_EN_LABELS, GUARDRAIL_LIST_EN_LABELS, GUARDRAIL_LIST_EN_MESSAGES, GUARDRAIL_PALETTE_EN_LABELS, GUARDRAIL_PALETTE_EN_MESSAGES, GUARDRAIL_REMOVE_DIALOG_EN_LABELS, GUARDRAIL_REMOVE_DIALOG_EN_MESSAGES, GUARDRAIL_RULES_EN_LABELS, GUARDRAIL_RULES_EN_MESSAGES, GUARDRAIL_RULE_OPERATORS, GUARDRAIL_SCOPE_SELECTOR_EN_LABELS, GUARDRAIL_SCOPE_SELECTOR_LABEL_KEYS, GuardrailActionSection, GuardrailBuilder, GuardrailChip, GuardrailFilterFieldSelector, GuardrailFormLayout, GuardrailList, GuardrailPalette, GuardrailRecipientType, GuardrailRemoveDialog, GuardrailRulesSection, GuardrailScopeSelector, GuardrailStatusBanner, GuardrailStatusChip, GuardrailValidatorForm, MixedScopesBanner, changeGuardrailRuleType, createDefaultGuardrailAction, createGuardrailRule, dropEmptyOptionalParameters, enrichGuardrailDefinitions, findCentralizedBuiltInDefinition, findCentralizedByoDefinition, formatCentralizedAction, formatCentralizedExecutionStage, formatCentralizedScope, formatGuardrailFormMessage, generateGuardrailId, getApplicableCentralizedGuardrails, getCentralizedGuardrailDisplay, getCentralizedGuardrailItemId, getGuardrailActionErrorFields, getGuardrailListChips, getGuardrailListItemId, getGuardrailPaletteItemId, getGuardrailRuleErrorFields, getGuardrailRulesErrorFields, getGuardrailSelectorErrorFields, getOutOfRangeParameterIds, getRequiredEmptyParameterIds, groupGuardrailsForPalette, guardrailChipVariants, guardrailOperatorTakesValue, humanizeGuardrailParameterId, initGuardrailBuilderFormData, isByoGuardrailDefinition, isCentralizedGuardrailConfigMissing, matchesGuardrailListDefinition, parseGuardrailDefinitions, resolveCentralizedGuardrailParameters, resolveCentralizedGuardrailsLabels, resolveGuardrailActionLabels, resolveGuardrailBuilderLabels, resolveGuardrailFilterFieldSelectorLabels, resolveGuardrailFormLabels, resolveGuardrailListItemState, resolveGuardrailListLabels, resolveGuardrailPaletteLabels, resolveGuardrailRemoveDialogLabels, resolveGuardrailRulesLabels, resolveGuardrailScopeSelectorLabels, seedGuardrailParameters, syncMapEnumParameters, useCentralizedGuardrailsLabels, useGuardrailActionLabels, useGuardrailBuilderLabels, useGuardrailDefinitionCopy, useGuardrailDefinitions, useGuardrailFilterFieldSelectorLabels, useGuardrailFormLabels, useGuardrailListLabels, useGuardrailPaletteLabels, useGuardrailRemoveDialogLabels, useGuardrailRulesLabels, useGuardrailScopeSelectorLabels, withGuardrailFolderMetadata };
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
GUARDRAIL_RULE_OPERATORS: ()=>GUARDRAIL_RULE_OPERATORS
|
|
28
|
+
});
|
|
29
|
+
const GUARDRAIL_RULE_OPERATORS = {
|
|
30
|
+
word: [
|
|
31
|
+
'contains',
|
|
32
|
+
'doesNotContain',
|
|
33
|
+
'equals',
|
|
34
|
+
'doesNotEqual',
|
|
35
|
+
'startsWith',
|
|
36
|
+
'doesNotStartWith',
|
|
37
|
+
'endsWith',
|
|
38
|
+
'doesNotEndWith',
|
|
39
|
+
'isEmpty',
|
|
40
|
+
'isNotEmpty',
|
|
41
|
+
'matchesRegex'
|
|
42
|
+
],
|
|
43
|
+
number: [
|
|
44
|
+
'equals',
|
|
45
|
+
'doesNotEqual',
|
|
46
|
+
'greaterThan',
|
|
47
|
+
'greaterThanOrEqual',
|
|
48
|
+
'lessThan',
|
|
49
|
+
'lessThanOrEqual'
|
|
50
|
+
],
|
|
51
|
+
boolean: [
|
|
52
|
+
'equals'
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
exports.GUARDRAIL_RULE_OPERATORS = __webpack_exports__.GUARDRAIL_RULE_OPERATORS;
|
|
56
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
57
|
+
"GUARDRAIL_RULE_OPERATORS"
|
|
58
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
59
|
+
Object.defineProperty(exports, '__esModule', {
|
|
60
|
+
value: true
|
|
61
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type GuardrailFieldSource = 'input' | 'output';
|
|
3
|
+
export interface GuardrailFieldReference {
|
|
4
|
+
path: string;
|
|
5
|
+
source: GuardrailFieldSource;
|
|
6
|
+
title?: string;
|
|
7
|
+
}
|
|
8
|
+
export type GuardrailFieldSelector = {
|
|
9
|
+
$selectorType: 'all';
|
|
10
|
+
} | {
|
|
11
|
+
$selectorType: 'specific';
|
|
12
|
+
fields: GuardrailFieldReference[];
|
|
13
|
+
};
|
|
14
|
+
export declare const GUARDRAIL_RULE_OPERATORS: {
|
|
15
|
+
readonly word: readonly ["contains", "doesNotContain", "equals", "doesNotEqual", "startsWith", "doesNotStartWith", "endsWith", "doesNotEndWith", "isEmpty", "isNotEmpty", "matchesRegex"];
|
|
16
|
+
readonly number: readonly ["equals", "doesNotEqual", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual"];
|
|
17
|
+
readonly boolean: readonly ["equals"];
|
|
18
|
+
};
|
|
19
|
+
export type GuardrailWordOperator = (typeof GUARDRAIL_RULE_OPERATORS.word)[number];
|
|
20
|
+
export type GuardrailNumberOperator = (typeof GUARDRAIL_RULE_OPERATORS.number)[number];
|
|
21
|
+
export type GuardrailBooleanOperator = (typeof GUARDRAIL_RULE_OPERATORS.boolean)[number];
|
|
22
|
+
export type GuardrailRuleOperator = GuardrailWordOperator | GuardrailNumberOperator | GuardrailBooleanOperator;
|
|
23
|
+
export interface GuardrailWordRule {
|
|
24
|
+
$ruleType: 'word';
|
|
25
|
+
fieldSelector: GuardrailFieldSelector;
|
|
26
|
+
operator: GuardrailWordOperator;
|
|
27
|
+
value?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface GuardrailNumberRule {
|
|
30
|
+
$ruleType: 'number';
|
|
31
|
+
fieldSelector: GuardrailFieldSelector;
|
|
32
|
+
operator: GuardrailNumberOperator;
|
|
33
|
+
value: number;
|
|
34
|
+
}
|
|
35
|
+
export interface GuardrailBooleanRule {
|
|
36
|
+
$ruleType: 'boolean';
|
|
37
|
+
fieldSelector: GuardrailFieldSelector;
|
|
38
|
+
operator: GuardrailBooleanOperator;
|
|
39
|
+
value: boolean;
|
|
40
|
+
}
|
|
41
|
+
export type GuardrailRuleApplyTo = 'input' | 'output' | 'inputAndOutput';
|
|
42
|
+
export interface GuardrailAlwaysRule {
|
|
43
|
+
$ruleType: 'always';
|
|
44
|
+
applyTo: GuardrailRuleApplyTo;
|
|
45
|
+
}
|
|
46
|
+
export type GuardrailFieldRule = GuardrailWordRule | GuardrailNumberRule | GuardrailBooleanRule;
|
|
47
|
+
export type GuardrailRule = GuardrailFieldRule | GuardrailAlwaysRule;
|
|
48
|
+
export type GuardrailRuleType = GuardrailRule['$ruleType'];
|
|
49
|
+
export type GuardrailFieldRuleType = GuardrailFieldRule['$ruleType'];
|
|
50
|
+
export interface GuardrailFieldGroup {
|
|
51
|
+
input: GuardrailFieldReference[];
|
|
52
|
+
output: GuardrailFieldReference[];
|
|
53
|
+
}
|
|
54
|
+
export type GuardrailRuleFields = Partial<Record<GuardrailFieldRuleType, GuardrailFieldGroup>>;
|
|
55
|
+
export interface GuardrailRuleErrors {
|
|
56
|
+
fields?: string;
|
|
57
|
+
value?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface GuardrailRulesErrors {
|
|
60
|
+
rules?: string;
|
|
61
|
+
perRule?: ReadonlyArray<GuardrailRuleErrors | undefined>;
|
|
62
|
+
}
|
|
63
|
+
export interface GuardrailRuleFieldSelectorContext {
|
|
64
|
+
index: number;
|
|
65
|
+
ruleType: GuardrailFieldRuleType;
|
|
66
|
+
selector: GuardrailFieldSelector;
|
|
67
|
+
fields: GuardrailFieldGroup;
|
|
68
|
+
onChange: (selector: GuardrailFieldSelector) => void;
|
|
69
|
+
label: string;
|
|
70
|
+
labelId: string;
|
|
71
|
+
invalid: boolean;
|
|
72
|
+
error?: string;
|
|
73
|
+
}
|
|
74
|
+
export type GuardrailRuleFieldSelectorRenderer = (ctx: GuardrailRuleFieldSelectorContext) => ReactNode | undefined;
|
|
75
|
+
//# sourceMappingURL=rules-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/rules-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const GUARDRAIL_RULE_OPERATORS = {
|
|
2
|
+
word: [
|
|
3
|
+
'contains',
|
|
4
|
+
'doesNotContain',
|
|
5
|
+
'equals',
|
|
6
|
+
'doesNotEqual',
|
|
7
|
+
'startsWith',
|
|
8
|
+
'doesNotStartWith',
|
|
9
|
+
'endsWith',
|
|
10
|
+
'doesNotEndWith',
|
|
11
|
+
'isEmpty',
|
|
12
|
+
'isNotEmpty',
|
|
13
|
+
'matchesRegex'
|
|
14
|
+
],
|
|
15
|
+
number: [
|
|
16
|
+
'equals',
|
|
17
|
+
'doesNotEqual',
|
|
18
|
+
'greaterThan',
|
|
19
|
+
'greaterThanOrEqual',
|
|
20
|
+
'lessThan',
|
|
21
|
+
'lessThanOrEqual'
|
|
22
|
+
],
|
|
23
|
+
boolean: [
|
|
24
|
+
'equals'
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
export { GUARDRAIL_RULE_OPERATORS };
|
|
@@ -0,0 +1,213 @@
|
|
|
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
|
+
changeGuardrailRuleType: ()=>changeGuardrailRuleType,
|
|
28
|
+
createGuardrailRule: ()=>createGuardrailRule,
|
|
29
|
+
getGuardrailFieldGroup: ()=>getGuardrailFieldGroup,
|
|
30
|
+
getGuardrailFieldName: ()=>getGuardrailFieldName,
|
|
31
|
+
getGuardrailRuleErrorFields: ()=>getGuardrailRuleErrorFields,
|
|
32
|
+
getGuardrailRuleTypeOptions: ()=>getGuardrailRuleTypeOptions,
|
|
33
|
+
getGuardrailRulesErrorFields: ()=>getGuardrailRulesErrorFields,
|
|
34
|
+
guardrailOperatorTakesValue: ()=>guardrailOperatorTakesValue,
|
|
35
|
+
isGuardrailAlwaysEnforced: ()=>isGuardrailAlwaysEnforced,
|
|
36
|
+
isGuardrailFieldSelected: ()=>isGuardrailFieldSelected,
|
|
37
|
+
isPristineGuardrailRule: ()=>isPristineGuardrailRule,
|
|
38
|
+
setGuardrailAlwaysEnforced: ()=>setGuardrailAlwaysEnforced,
|
|
39
|
+
toggleGuardrailFieldReference: ()=>toggleGuardrailFieldReference,
|
|
40
|
+
toggleGuardrailSelectorField: ()=>toggleGuardrailSelectorField
|
|
41
|
+
});
|
|
42
|
+
const FIELD_RULE_TYPES = [
|
|
43
|
+
'word',
|
|
44
|
+
'number',
|
|
45
|
+
'boolean'
|
|
46
|
+
];
|
|
47
|
+
const EMPTY_FIELD_GROUP = {
|
|
48
|
+
input: [],
|
|
49
|
+
output: []
|
|
50
|
+
};
|
|
51
|
+
function createGuardrailRule(type) {
|
|
52
|
+
switch(type){
|
|
53
|
+
case 'number':
|
|
54
|
+
return {
|
|
55
|
+
$ruleType: 'number',
|
|
56
|
+
fieldSelector: {
|
|
57
|
+
$selectorType: 'all'
|
|
58
|
+
},
|
|
59
|
+
operator: 'equals',
|
|
60
|
+
value: 0
|
|
61
|
+
};
|
|
62
|
+
case 'boolean':
|
|
63
|
+
return {
|
|
64
|
+
$ruleType: 'boolean',
|
|
65
|
+
fieldSelector: {
|
|
66
|
+
$selectorType: 'all'
|
|
67
|
+
},
|
|
68
|
+
operator: 'equals',
|
|
69
|
+
value: false
|
|
70
|
+
};
|
|
71
|
+
case 'always':
|
|
72
|
+
return {
|
|
73
|
+
$ruleType: 'always',
|
|
74
|
+
applyTo: 'inputAndOutput'
|
|
75
|
+
};
|
|
76
|
+
default:
|
|
77
|
+
return {
|
|
78
|
+
$ruleType: 'word',
|
|
79
|
+
fieldSelector: {
|
|
80
|
+
$selectorType: 'all'
|
|
81
|
+
},
|
|
82
|
+
operator: 'contains',
|
|
83
|
+
value: ''
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function changeGuardrailRuleType(rule, type) {
|
|
88
|
+
return rule.$ruleType === type ? rule : createGuardrailRule(type);
|
|
89
|
+
}
|
|
90
|
+
function guardrailOperatorTakesValue(operator) {
|
|
91
|
+
return 'isEmpty' !== operator && 'isNotEmpty' !== operator;
|
|
92
|
+
}
|
|
93
|
+
function getGuardrailRuleErrorFields(rule) {
|
|
94
|
+
if ('always' === rule.$ruleType) return [];
|
|
95
|
+
const fields = [];
|
|
96
|
+
if ('specific' === rule.fieldSelector.$selectorType && 0 === rule.fieldSelector.fields.length) fields.push('fields');
|
|
97
|
+
switch(rule.$ruleType){
|
|
98
|
+
case 'word':
|
|
99
|
+
if (guardrailOperatorTakesValue(rule.operator) && ('string' != typeof rule.value || !rule.value.trim())) fields.push('value');
|
|
100
|
+
break;
|
|
101
|
+
case 'number':
|
|
102
|
+
if ('number' != typeof rule.value || !Number.isFinite(rule.value)) fields.push('value');
|
|
103
|
+
break;
|
|
104
|
+
case 'boolean':
|
|
105
|
+
if ('boolean' != typeof rule.value) fields.push('value');
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
return fields;
|
|
109
|
+
}
|
|
110
|
+
function getGuardrailRulesErrorFields(rules) {
|
|
111
|
+
if (0 === rules.length) return [
|
|
112
|
+
'required'
|
|
113
|
+
];
|
|
114
|
+
const fields = [];
|
|
115
|
+
if (rules.length > 1 && rules.some((rule)=>'always' === rule.$ruleType)) fields.push('alwaysCombined');
|
|
116
|
+
if (rules.some((rule)=>getGuardrailRuleErrorFields(rule).length > 0)) fields.push('invalidRules');
|
|
117
|
+
return fields;
|
|
118
|
+
}
|
|
119
|
+
function getGuardrailRuleTypeOptions(fields) {
|
|
120
|
+
if (void 0 === fields) return [
|
|
121
|
+
...FIELD_RULE_TYPES
|
|
122
|
+
];
|
|
123
|
+
return FIELD_RULE_TYPES.filter((type)=>{
|
|
124
|
+
const group = fields[type];
|
|
125
|
+
return void 0 !== group && group.input.length + group.output.length > 0;
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function getGuardrailFieldGroup(fields, type) {
|
|
129
|
+
return fields?.[type] ?? EMPTY_FIELD_GROUP;
|
|
130
|
+
}
|
|
131
|
+
function isGuardrailAlwaysEnforced(rules) {
|
|
132
|
+
return rules.some((rule)=>'always' === rule.$ruleType);
|
|
133
|
+
}
|
|
134
|
+
function isPristineGuardrailRule(rule) {
|
|
135
|
+
const fresh = createGuardrailRule(rule.$ruleType);
|
|
136
|
+
const value = 'word' === rule.$ruleType ? rule.value ?? '' : rule.value;
|
|
137
|
+
return 'all' === rule.fieldSelector.$selectorType && rule.operator === fresh.operator && value === fresh.value;
|
|
138
|
+
}
|
|
139
|
+
function setGuardrailAlwaysEnforced(rules, enforced, defaultType) {
|
|
140
|
+
if (enforced) return [
|
|
141
|
+
rules.find((rule)=>'always' === rule.$ruleType) ?? createGuardrailRule('always')
|
|
142
|
+
];
|
|
143
|
+
const kept = rules.filter((rule)=>'always' !== rule.$ruleType);
|
|
144
|
+
return kept.length > 0 ? kept : [
|
|
145
|
+
createGuardrailRule(defaultType)
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
const sameField = (a, b)=>a.source === b.source && a.path === b.path;
|
|
149
|
+
function isGuardrailFieldSelected(fields, field) {
|
|
150
|
+
return fields.some((candidate)=>sameField(candidate, field));
|
|
151
|
+
}
|
|
152
|
+
function toggleGuardrailFieldReference(fields, field) {
|
|
153
|
+
if (isGuardrailFieldSelected(fields, field)) return fields.filter((candidate)=>!sameField(candidate, field));
|
|
154
|
+
const { path, source, title } = field;
|
|
155
|
+
return [
|
|
156
|
+
...fields,
|
|
157
|
+
void 0 === title ? {
|
|
158
|
+
path,
|
|
159
|
+
source
|
|
160
|
+
} : {
|
|
161
|
+
path,
|
|
162
|
+
source,
|
|
163
|
+
title
|
|
164
|
+
}
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
function toggleGuardrailSelectorField(selector, field) {
|
|
168
|
+
const current = 'specific' === selector.$selectorType ? selector.fields : [];
|
|
169
|
+
const next = toggleGuardrailFieldReference(current, field);
|
|
170
|
+
return 0 === next.length ? {
|
|
171
|
+
$selectorType: 'all'
|
|
172
|
+
} : {
|
|
173
|
+
$selectorType: 'specific',
|
|
174
|
+
fields: next
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function getGuardrailFieldName(field, offered) {
|
|
178
|
+
const match = offered[field.source].find((candidate)=>candidate.path === field.path);
|
|
179
|
+
return match?.title || field.title || field.path;
|
|
180
|
+
}
|
|
181
|
+
exports.changeGuardrailRuleType = __webpack_exports__.changeGuardrailRuleType;
|
|
182
|
+
exports.createGuardrailRule = __webpack_exports__.createGuardrailRule;
|
|
183
|
+
exports.getGuardrailFieldGroup = __webpack_exports__.getGuardrailFieldGroup;
|
|
184
|
+
exports.getGuardrailFieldName = __webpack_exports__.getGuardrailFieldName;
|
|
185
|
+
exports.getGuardrailRuleErrorFields = __webpack_exports__.getGuardrailRuleErrorFields;
|
|
186
|
+
exports.getGuardrailRuleTypeOptions = __webpack_exports__.getGuardrailRuleTypeOptions;
|
|
187
|
+
exports.getGuardrailRulesErrorFields = __webpack_exports__.getGuardrailRulesErrorFields;
|
|
188
|
+
exports.guardrailOperatorTakesValue = __webpack_exports__.guardrailOperatorTakesValue;
|
|
189
|
+
exports.isGuardrailAlwaysEnforced = __webpack_exports__.isGuardrailAlwaysEnforced;
|
|
190
|
+
exports.isGuardrailFieldSelected = __webpack_exports__.isGuardrailFieldSelected;
|
|
191
|
+
exports.isPristineGuardrailRule = __webpack_exports__.isPristineGuardrailRule;
|
|
192
|
+
exports.setGuardrailAlwaysEnforced = __webpack_exports__.setGuardrailAlwaysEnforced;
|
|
193
|
+
exports.toggleGuardrailFieldReference = __webpack_exports__.toggleGuardrailFieldReference;
|
|
194
|
+
exports.toggleGuardrailSelectorField = __webpack_exports__.toggleGuardrailSelectorField;
|
|
195
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
196
|
+
"changeGuardrailRuleType",
|
|
197
|
+
"createGuardrailRule",
|
|
198
|
+
"getGuardrailFieldGroup",
|
|
199
|
+
"getGuardrailFieldName",
|
|
200
|
+
"getGuardrailRuleErrorFields",
|
|
201
|
+
"getGuardrailRuleTypeOptions",
|
|
202
|
+
"getGuardrailRulesErrorFields",
|
|
203
|
+
"guardrailOperatorTakesValue",
|
|
204
|
+
"isGuardrailAlwaysEnforced",
|
|
205
|
+
"isGuardrailFieldSelected",
|
|
206
|
+
"isPristineGuardrailRule",
|
|
207
|
+
"setGuardrailAlwaysEnforced",
|
|
208
|
+
"toggleGuardrailFieldReference",
|
|
209
|
+
"toggleGuardrailSelectorField"
|
|
210
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
211
|
+
Object.defineProperty(exports, '__esModule', {
|
|
212
|
+
value: true
|
|
213
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GuardrailFieldGroup, GuardrailFieldReference, GuardrailFieldRule, GuardrailFieldRuleType, GuardrailFieldSelector, GuardrailRule, GuardrailRuleFields, GuardrailRuleOperator, GuardrailRuleType } from './rules-types';
|
|
2
|
+
type RuleOfType<T extends GuardrailRuleType> = Extract<GuardrailRule, {
|
|
3
|
+
$ruleType: T;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function createGuardrailRule<T extends GuardrailRuleType>(type: T): RuleOfType<T>;
|
|
6
|
+
export declare function changeGuardrailRuleType(rule: GuardrailRule, type: GuardrailRuleType): GuardrailRule;
|
|
7
|
+
export declare function guardrailOperatorTakesValue(operator: GuardrailRuleOperator): boolean;
|
|
8
|
+
export type GuardrailRuleErrorField = 'fields' | 'value';
|
|
9
|
+
export declare function getGuardrailRuleErrorFields(rule: GuardrailRule): GuardrailRuleErrorField[];
|
|
10
|
+
export type GuardrailRulesErrorField = 'required' | 'alwaysCombined' | 'invalidRules';
|
|
11
|
+
export declare function getGuardrailRulesErrorFields(rules: readonly GuardrailRule[]): GuardrailRulesErrorField[];
|
|
12
|
+
export declare function getGuardrailRuleTypeOptions(fields?: GuardrailRuleFields): GuardrailFieldRuleType[];
|
|
13
|
+
export declare function getGuardrailFieldGroup(fields: GuardrailRuleFields | undefined, type: GuardrailFieldRuleType): GuardrailFieldGroup;
|
|
14
|
+
export declare function isGuardrailAlwaysEnforced(rules: readonly GuardrailRule[]): boolean;
|
|
15
|
+
export declare function isPristineGuardrailRule(rule: GuardrailFieldRule): boolean;
|
|
16
|
+
export declare function setGuardrailAlwaysEnforced(rules: readonly GuardrailRule[], enforced: boolean, defaultType: GuardrailFieldRuleType): GuardrailRule[];
|
|
17
|
+
export declare function isGuardrailFieldSelected(fields: readonly GuardrailFieldReference[], field: GuardrailFieldReference): boolean;
|
|
18
|
+
export declare function toggleGuardrailFieldReference(fields: readonly GuardrailFieldReference[], field: GuardrailFieldReference): GuardrailFieldReference[];
|
|
19
|
+
export declare function toggleGuardrailSelectorField(selector: GuardrailFieldSelector, field: GuardrailFieldReference): GuardrailFieldSelector;
|
|
20
|
+
export declare function getGuardrailFieldName(field: GuardrailFieldReference, offered: GuardrailFieldGroup): string;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=rules-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-utils.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Guardrails/rules-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EAEtB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAEvB,KAAK,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAOxF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAiCzF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,iBAAiB,GACtB,aAAa,CAEf;AAGD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAEpF;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAGzD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,aAAa,GAAG,uBAAuB,EAAE,CAuB1F;AAOD,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAGtF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,wBAAwB,EAAE,CAW5B;AAQD,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,sBAAsB,EAAE,CAM1B;AAGD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,IAAI,EAAE,sBAAsB,GAC3B,mBAAmB,CAErB;AAGD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAElF;AAQD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAQzE;AAQD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,sBAAsB,GAClC,aAAa,EAAE,CAMjB;AAMD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,uBAAuB,EAAE,EAC1C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAET;AAQD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,uBAAuB,EAAE,EAC1C,KAAK,EAAE,uBAAuB,GAC7B,uBAAuB,EAAE,CAM3B;AAQD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,uBAAuB,GAC7B,sBAAsB,CAIxB;AAQD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAGR"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const FIELD_RULE_TYPES = [
|
|
2
|
+
'word',
|
|
3
|
+
'number',
|
|
4
|
+
'boolean'
|
|
5
|
+
];
|
|
6
|
+
const EMPTY_FIELD_GROUP = {
|
|
7
|
+
input: [],
|
|
8
|
+
output: []
|
|
9
|
+
};
|
|
10
|
+
function createGuardrailRule(type) {
|
|
11
|
+
switch(type){
|
|
12
|
+
case 'number':
|
|
13
|
+
return {
|
|
14
|
+
$ruleType: 'number',
|
|
15
|
+
fieldSelector: {
|
|
16
|
+
$selectorType: 'all'
|
|
17
|
+
},
|
|
18
|
+
operator: 'equals',
|
|
19
|
+
value: 0
|
|
20
|
+
};
|
|
21
|
+
case 'boolean':
|
|
22
|
+
return {
|
|
23
|
+
$ruleType: 'boolean',
|
|
24
|
+
fieldSelector: {
|
|
25
|
+
$selectorType: 'all'
|
|
26
|
+
},
|
|
27
|
+
operator: 'equals',
|
|
28
|
+
value: false
|
|
29
|
+
};
|
|
30
|
+
case 'always':
|
|
31
|
+
return {
|
|
32
|
+
$ruleType: 'always',
|
|
33
|
+
applyTo: 'inputAndOutput'
|
|
34
|
+
};
|
|
35
|
+
default:
|
|
36
|
+
return {
|
|
37
|
+
$ruleType: 'word',
|
|
38
|
+
fieldSelector: {
|
|
39
|
+
$selectorType: 'all'
|
|
40
|
+
},
|
|
41
|
+
operator: 'contains',
|
|
42
|
+
value: ''
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function changeGuardrailRuleType(rule, type) {
|
|
47
|
+
return rule.$ruleType === type ? rule : createGuardrailRule(type);
|
|
48
|
+
}
|
|
49
|
+
function guardrailOperatorTakesValue(operator) {
|
|
50
|
+
return 'isEmpty' !== operator && 'isNotEmpty' !== operator;
|
|
51
|
+
}
|
|
52
|
+
function getGuardrailRuleErrorFields(rule) {
|
|
53
|
+
if ('always' === rule.$ruleType) return [];
|
|
54
|
+
const fields = [];
|
|
55
|
+
if ('specific' === rule.fieldSelector.$selectorType && 0 === rule.fieldSelector.fields.length) fields.push('fields');
|
|
56
|
+
switch(rule.$ruleType){
|
|
57
|
+
case 'word':
|
|
58
|
+
if (guardrailOperatorTakesValue(rule.operator) && ('string' != typeof rule.value || !rule.value.trim())) fields.push('value');
|
|
59
|
+
break;
|
|
60
|
+
case 'number':
|
|
61
|
+
if ('number' != typeof rule.value || !Number.isFinite(rule.value)) fields.push('value');
|
|
62
|
+
break;
|
|
63
|
+
case 'boolean':
|
|
64
|
+
if ('boolean' != typeof rule.value) fields.push('value');
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
return fields;
|
|
68
|
+
}
|
|
69
|
+
function getGuardrailRulesErrorFields(rules) {
|
|
70
|
+
if (0 === rules.length) return [
|
|
71
|
+
'required'
|
|
72
|
+
];
|
|
73
|
+
const fields = [];
|
|
74
|
+
if (rules.length > 1 && rules.some((rule)=>'always' === rule.$ruleType)) fields.push('alwaysCombined');
|
|
75
|
+
if (rules.some((rule)=>getGuardrailRuleErrorFields(rule).length > 0)) fields.push('invalidRules');
|
|
76
|
+
return fields;
|
|
77
|
+
}
|
|
78
|
+
function getGuardrailRuleTypeOptions(fields) {
|
|
79
|
+
if (void 0 === fields) return [
|
|
80
|
+
...FIELD_RULE_TYPES
|
|
81
|
+
];
|
|
82
|
+
return FIELD_RULE_TYPES.filter((type)=>{
|
|
83
|
+
const group = fields[type];
|
|
84
|
+
return void 0 !== group && group.input.length + group.output.length > 0;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function getGuardrailFieldGroup(fields, type) {
|
|
88
|
+
return fields?.[type] ?? EMPTY_FIELD_GROUP;
|
|
89
|
+
}
|
|
90
|
+
function isGuardrailAlwaysEnforced(rules) {
|
|
91
|
+
return rules.some((rule)=>'always' === rule.$ruleType);
|
|
92
|
+
}
|
|
93
|
+
function isPristineGuardrailRule(rule) {
|
|
94
|
+
const fresh = createGuardrailRule(rule.$ruleType);
|
|
95
|
+
const value = 'word' === rule.$ruleType ? rule.value ?? '' : rule.value;
|
|
96
|
+
return 'all' === rule.fieldSelector.$selectorType && rule.operator === fresh.operator && value === fresh.value;
|
|
97
|
+
}
|
|
98
|
+
function setGuardrailAlwaysEnforced(rules, enforced, defaultType) {
|
|
99
|
+
if (enforced) return [
|
|
100
|
+
rules.find((rule)=>'always' === rule.$ruleType) ?? createGuardrailRule('always')
|
|
101
|
+
];
|
|
102
|
+
const kept = rules.filter((rule)=>'always' !== rule.$ruleType);
|
|
103
|
+
return kept.length > 0 ? kept : [
|
|
104
|
+
createGuardrailRule(defaultType)
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
const sameField = (a, b)=>a.source === b.source && a.path === b.path;
|
|
108
|
+
function isGuardrailFieldSelected(fields, field) {
|
|
109
|
+
return fields.some((candidate)=>sameField(candidate, field));
|
|
110
|
+
}
|
|
111
|
+
function toggleGuardrailFieldReference(fields, field) {
|
|
112
|
+
if (isGuardrailFieldSelected(fields, field)) return fields.filter((candidate)=>!sameField(candidate, field));
|
|
113
|
+
const { path, source, title } = field;
|
|
114
|
+
return [
|
|
115
|
+
...fields,
|
|
116
|
+
void 0 === title ? {
|
|
117
|
+
path,
|
|
118
|
+
source
|
|
119
|
+
} : {
|
|
120
|
+
path,
|
|
121
|
+
source,
|
|
122
|
+
title
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
function toggleGuardrailSelectorField(selector, field) {
|
|
127
|
+
const current = 'specific' === selector.$selectorType ? selector.fields : [];
|
|
128
|
+
const next = toggleGuardrailFieldReference(current, field);
|
|
129
|
+
return 0 === next.length ? {
|
|
130
|
+
$selectorType: 'all'
|
|
131
|
+
} : {
|
|
132
|
+
$selectorType: 'specific',
|
|
133
|
+
fields: next
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function getGuardrailFieldName(field, offered) {
|
|
137
|
+
const match = offered[field.source].find((candidate)=>candidate.path === field.path);
|
|
138
|
+
return match?.title || field.title || field.path;
|
|
139
|
+
}
|
|
140
|
+
export { changeGuardrailRuleType, createGuardrailRule, getGuardrailFieldGroup, getGuardrailFieldName, getGuardrailRuleErrorFields, getGuardrailRuleTypeOptions, getGuardrailRulesErrorFields, guardrailOperatorTakesValue, isGuardrailAlwaysEnforced, isGuardrailFieldSelected, isPristineGuardrailRule, setGuardrailAlwaysEnforced, toggleGuardrailFieldReference, toggleGuardrailSelectorField };
|