@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.
Files changed (43) hide show
  1. package/dist/canvas/components/Guardrails/builder-types.d.ts +1 -0
  2. package/dist/canvas/components/Guardrails/builder-types.d.ts.map +1 -1
  3. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.cjs +227 -0
  4. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts +23 -0
  5. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts.map +1 -0
  6. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.js +193 -0
  7. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.cjs +276 -0
  8. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts +17 -0
  9. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts.map +1 -0
  10. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.js +242 -0
  11. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.cjs +4 -2
  12. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts +6 -8
  13. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts.map +1 -1
  14. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.js +5 -3
  15. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.cjs +76 -0
  16. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts +13 -0
  17. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts.map +1 -0
  18. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.js +42 -0
  19. package/dist/canvas/components/Guardrails/guardrail-rules-section.cjs +159 -0
  20. package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts +15 -0
  21. package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts.map +1 -0
  22. package/dist/canvas/components/Guardrails/guardrail-rules-section.js +125 -0
  23. package/dist/canvas/components/Guardrails/i18n.cjs +321 -16
  24. package/dist/canvas/components/Guardrails/i18n.d.ts +65 -0
  25. package/dist/canvas/components/Guardrails/i18n.d.ts.map +1 -1
  26. package/dist/canvas/components/Guardrails/i18n.js +271 -2
  27. package/dist/canvas/components/Guardrails/index.cjs +72 -4
  28. package/dist/canvas/components/Guardrails/index.d.ts +13 -3
  29. package/dist/canvas/components/Guardrails/index.d.ts.map +1 -1
  30. package/dist/canvas/components/Guardrails/index.js +7 -2
  31. package/dist/canvas/components/Guardrails/rules-types.cjs +61 -0
  32. package/dist/canvas/components/Guardrails/rules-types.d.ts +75 -0
  33. package/dist/canvas/components/Guardrails/rules-types.d.ts.map +1 -0
  34. package/dist/canvas/components/Guardrails/rules-types.js +27 -0
  35. package/dist/canvas/components/Guardrails/rules-utils.cjs +213 -0
  36. package/dist/canvas/components/Guardrails/rules-utils.d.ts +22 -0
  37. package/dist/canvas/components/Guardrails/rules-utils.d.ts.map +1 -0
  38. package/dist/canvas/components/Guardrails/rules-utils.js +140 -0
  39. package/dist/canvas/locales/en.cjs +1 -1
  40. package/dist/canvas/locales/en.d.ts.map +1 -1
  41. package/dist/canvas/locales/en.js +1 -1
  42. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  43. 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 };