treege 3.0.0-beta.9 → 3.0.0-beta.90

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 (225) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +598 -79
  3. package/dist/DefaultSubmitButton-NeSDqyzv.js +1909 -0
  4. package/dist/ThemeContext-CPsC8QIP.js +1008 -0
  5. package/dist/editor/components/input/ComboboxWithCreate.d.ts +2 -1
  6. package/dist/editor/components/styles/EditorStyles.d.ts +2 -0
  7. package/dist/editor/constants/defaultNode.d.ts +1 -1
  8. package/dist/editor/constants/edgeTypes.d.ts +3 -2
  9. package/dist/editor/constants/inputTypeIcons.d.ts +3 -0
  10. package/dist/editor/constants/nodeSpacing.d.ts +25 -0
  11. package/dist/editor/constants/nodeTypes.d.ts +4 -5
  12. package/dist/editor/context/OpenApiContext.d.ts +79 -0
  13. package/dist/editor/context/TreegeEditorRuntimeProvider.d.ts +78 -0
  14. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
  15. package/dist/editor/features/TreegeEditor/controls/MiniMapControl.d.ts +6 -0
  16. package/dist/editor/features/TreegeEditor/dialogs/AuthorizeDialog.d.ts +20 -0
  17. package/dist/editor/features/TreegeEditor/dialogs/ChangeNodeTypeDialog.d.ts +2 -0
  18. package/dist/editor/features/TreegeEditor/dialogs/DeleteNodeDialog.d.ts +2 -0
  19. package/dist/editor/features/TreegeEditor/dialogs/HeadersDialog.d.ts +19 -0
  20. package/dist/editor/features/TreegeEditor/dialogs/OpenApiDialog.d.ts +6 -0
  21. package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +2 -2
  22. package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +3 -0
  23. package/dist/editor/features/TreegeEditor/forms/HttpConfigForm.d.ts +4 -1
  24. package/dist/editor/features/TreegeEditor/forms/JsonTemplateEditor.d.ts +13 -0
  25. package/dist/editor/features/TreegeEditor/forms/OptionsMappingFields.d.ts +34 -0
  26. package/dist/editor/features/TreegeEditor/forms/OptionsSourceForm.d.ts +7 -0
  27. package/dist/editor/features/TreegeEditor/forms/SensitiveHeaderWarning.d.ts +13 -0
  28. package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
  29. package/dist/editor/features/TreegeEditor/inputs/ApiUrlCombobox.d.ts +20 -0
  30. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
  31. package/dist/editor/features/TreegeEditor/inputs/DefaultFileValueField.d.ts +14 -0
  32. package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
  33. package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +22 -1
  34. package/dist/editor/features/TreegeEditor/inputs/TranslatableInput.d.ts +20 -0
  35. package/dist/editor/features/TreegeEditor/layout/AutoLayout.d.ts +15 -0
  36. package/dist/editor/features/TreegeEditor/listeners/FlowChangeEmitter.d.ts +19 -0
  37. package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +5 -0
  38. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +25 -0
  39. package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +6 -0
  40. package/dist/editor/features/TreegeEditor/nodes/components/NodeImage.d.ts +5 -0
  41. package/dist/editor/features/TreegeEditor/nodes/components/NodeImageButton.d.ts +6 -0
  42. package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +12 -0
  43. package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +10 -0
  44. package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
  45. package/dist/editor/features/TreegeEditor/nodes/components/NodeRequiredButton.d.ts +6 -0
  46. package/dist/editor/features/TreegeEditor/nodes/components/NodeStackOrderButtons.d.ts +6 -0
  47. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
  48. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypePickerMenuContent.d.ts +12 -0
  49. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +4 -2
  50. package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
  51. package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -2
  52. package/dist/editor/features/TreegeEditor/panel/MultiSelectionPanel.d.ts +7 -0
  53. package/dist/editor/hooks/useAvailableParentFields.d.ts +13 -0
  54. package/dist/editor/hooks/useFlowActions.d.ts +6 -2
  55. package/dist/editor/hooks/useFlowConnections.d.ts +14 -0
  56. package/dist/editor/hooks/useFlowContent.d.ts +16 -0
  57. package/dist/editor/hooks/useHistoryStore.d.ts +26 -0
  58. package/dist/editor/hooks/useIsStackedEdge.d.ts +8 -0
  59. package/dist/editor/hooks/useKeyValueRows.d.ts +15 -0
  60. package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
  61. package/dist/editor/hooks/useStackPosition.d.ts +14 -0
  62. package/dist/editor/hooks/useTranslate.d.ts +1 -1
  63. package/dist/editor/hooks/useUndoRedo.d.ts +31 -0
  64. package/dist/editor/types/ai.d.ts +65 -0
  65. package/dist/editor/types/editor.d.ts +106 -10
  66. package/dist/editor/types/openapi.d.ts +106 -0
  67. package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
  68. package/dist/editor/utils/cleanEmptyData.d.ts +18 -0
  69. package/dist/editor/utils/cleanNodeConfig.d.ts +5 -0
  70. package/dist/editor/utils/dagreLayout.d.ts +8 -0
  71. package/dist/editor/utils/edge.d.ts +50 -0
  72. package/dist/editor/utils/groupColor.d.ts +14 -0
  73. package/dist/editor/utils/image.d.ts +7 -0
  74. package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
  75. package/dist/editor/utils/jsonBindTarget.d.ts +15 -0
  76. package/dist/editor/utils/openApiPayload.d.ts +12 -0
  77. package/dist/editor/utils/openapi.d.ts +35 -0
  78. package/dist/editor/utils/sensitiveHeaders.d.ts +20 -0
  79. package/dist/editor/utils/stackPositionIndex.d.ts +9 -0
  80. package/dist/editor-D3EmQ-8C.js +6485 -0
  81. package/dist/editor.js +3 -7
  82. package/dist/main.js +6 -52
  83. package/dist/renderer/context/TreegeRenderRuntimeProvider.d.ts +135 -0
  84. package/dist/renderer/context/TreegeRendererProvider.d.ts +15 -0
  85. package/dist/renderer/context/TreegeViewerProvider.d.ts +28 -0
  86. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  87. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  88. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputLabel.d.ts +10 -0
  89. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputWrapper.d.ts +9 -0
  90. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +20 -15
  91. package/dist/renderer/features/TreegeRenderer/native/components/DefaultLoadingSkeleton.d.ts +8 -0
  92. package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
  93. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  94. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  95. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  96. package/dist/renderer/features/TreegeRenderer/native/components/DependencyHint.d.ts +15 -0
  97. package/dist/renderer/features/TreegeRenderer/native/components/OptionItemContent.d.ts +17 -0
  98. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  99. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  100. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  101. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  102. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  103. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  104. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  105. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  106. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  107. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  108. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  109. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  110. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSubmitInput.d.ts +11 -0
  111. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  112. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  113. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  114. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  115. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  116. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +97 -24
  117. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  118. package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +3 -2
  119. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputLabel.d.ts +9 -0
  120. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputWrapper.d.ts +9 -0
  121. package/dist/renderer/features/TreegeRenderer/web/components/DefaultLoadingSkeleton.d.ts +7 -0
  122. package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
  123. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +5 -1
  124. package/dist/renderer/features/TreegeRenderer/web/components/DependencyHint.d.ts +22 -0
  125. package/dist/renderer/features/TreegeRenderer/web/components/OptionItemContent.d.ts +17 -0
  126. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
  127. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
  128. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
  129. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
  130. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
  131. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
  132. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
  133. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
  134. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
  135. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
  136. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
  137. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
  138. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +11 -0
  139. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
  140. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
  141. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
  142. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
  143. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
  144. package/dist/renderer/features/TreegeRenderer/web/components/styles/RendererStyles.d.ts +2 -0
  145. package/dist/renderer/features/TreegeViewer/utils/viewerFields.d.ts +102 -0
  146. package/dist/renderer/features/TreegeViewer/web/TreegeViewer.d.ts +94 -0
  147. package/dist/renderer/hooks/useInputOptions.d.ts +28 -0
  148. package/dist/renderer/hooks/useRenderNode.d.ts +62 -0
  149. package/dist/renderer/hooks/useSubmitHandler.d.ts +37 -0
  150. package/dist/renderer/hooks/useTranslate.d.ts +7 -5
  151. package/dist/renderer/index.d.ts +10 -2
  152. package/dist/renderer/index.native.d.ts +20 -0
  153. package/dist/renderer/types/renderer.d.ts +332 -49
  154. package/dist/renderer/utils/extraPayload.d.ts +21 -0
  155. package/dist/renderer/utils/file.d.ts +24 -10
  156. package/dist/renderer/utils/flow.d.ts +1 -18
  157. package/dist/renderer/utils/form.d.ts +54 -2
  158. package/dist/renderer/utils/http.d.ts +177 -0
  159. package/dist/renderer/utils/jsonTemplate.d.ts +30 -0
  160. package/dist/renderer/utils/node.d.ts +29 -1
  161. package/dist/renderer/utils/sanitize.d.ts +85 -0
  162. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  163. package/dist/renderer/utils/step.d.ts +27 -0
  164. package/dist/renderer/utils/submit.d.ts +50 -0
  165. package/dist/renderer/utils/templateDependencies.d.ts +17 -0
  166. package/dist/renderer-CNbSt_QW.js +446 -0
  167. package/dist/renderer-native.d.ts +2 -0
  168. package/dist/renderer-native.js +3692 -0
  169. package/dist/renderer.js +5 -45
  170. package/dist/shared/components/ui/badge.d.ts +2 -2
  171. package/dist/shared/components/ui/button.d.ts +3 -3
  172. package/dist/shared/components/ui/collapsible.d.ts +1 -1
  173. package/dist/shared/components/ui/command.d.ts +1 -1
  174. package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
  175. package/dist/shared/components/ui/field.d.ts +24 -0
  176. package/dist/shared/components/ui/form.d.ts +1 -1
  177. package/dist/shared/components/ui/item.d.ts +23 -0
  178. package/dist/shared/components/ui/popover.d.ts +10 -2
  179. package/dist/shared/components/ui/select.d.ts +3 -1
  180. package/dist/shared/components/ui/sheet.d.ts +1 -1
  181. package/dist/shared/components/ui/skeleton.d.ts +3 -0
  182. package/dist/shared/components/ui/toggle-group.d.ts +7 -0
  183. package/dist/shared/components/ui/toggle.d.ts +9 -0
  184. package/dist/shared/components/ui/tooltip.d.ts +1 -1
  185. package/dist/shared/constants/colors.d.ts +45 -0
  186. package/dist/shared/constants/inputType.d.ts +6 -0
  187. package/dist/shared/constants/node.d.ts +0 -1
  188. package/dist/shared/context/PortalContainerContext.d.ts +5 -0
  189. package/dist/shared/context/ThemeContext.d.ts +2 -0
  190. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  191. package/dist/shared/hooks/useMediaQuery.d.ts +12 -0
  192. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  193. package/dist/shared/locales/ar.json.d.ts +259 -19
  194. package/dist/shared/locales/de.json.d.ts +260 -20
  195. package/dist/shared/locales/en.json.d.ts +261 -21
  196. package/dist/shared/locales/es.json.d.ts +260 -20
  197. package/dist/shared/locales/fr.json.d.ts +260 -20
  198. package/dist/shared/locales/it.json.d.ts +260 -20
  199. package/dist/shared/locales/pt.json.d.ts +260 -20
  200. package/dist/shared/types/edge.d.ts +6 -0
  201. package/dist/shared/types/file.d.ts +14 -0
  202. package/dist/shared/types/node.d.ts +155 -19
  203. package/dist/shared/utils/httpRecord.d.ts +20 -0
  204. package/dist/shared/utils/inputTypeGuards.d.ts +7 -0
  205. package/dist/shared/utils/nodeTypeGuards.d.ts +1 -6
  206. package/dist/shared/utils/normalizeLabel.d.ts +22 -0
  207. package/dist/shared/utils/translations.d.ts +21 -1
  208. package/dist/useRenderNode-CG466pNk.js +538 -0
  209. package/package.json +54 -22
  210. package/dist/ThemeContext-BIvs8Kw-.js +0 -758
  211. package/dist/TreegeEditor-Lv5Tn9_F.js +0 -2152
  212. package/dist/TreegeRenderer-BVaqgInZ.js +0 -1405
  213. package/dist/editor/context/TreegeEditorContext.d.ts +0 -12
  214. package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +0 -2
  215. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
  216. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
  217. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
  218. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
  219. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
  220. package/dist/editor/hooks/useEdgesSelection.d.ts +0 -11
  221. package/dist/renderer/context/TreegeConfigContext.d.ts +0 -39
  222. package/dist/renderer/context/TreegeRendererContext.d.ts +0 -25
  223. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
  224. package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
  225. /package/dist/editor/components/{data-display/logo.d.ts → branding/Logo.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ import { Flow } from '../../shared/types/node';
2
+ /**
3
+ * Returns a copy of `data` keeping only the entries that carry information:
4
+ * everything that is neither empty (see `isEmptyValue`) nor a redundant field
5
+ * default (see `DEFAULT_DATA_VALUES`). Meaningful falsy values like `false` and
6
+ * `0` are kept. Used before persisting an input node's form so toggling a single
7
+ * field doesn't flood the node — and the exported JSON — with empty defaults.
8
+ */
9
+ export declare const cleanEmptyData: (data: Record<string, unknown>) => Record<string, unknown>;
10
+ /**
11
+ * Returns a copy of the flow trimmed for export: every node's `data` is cleaned
12
+ * of empty values and field defaults (see `cleanEmptyData`), and transient
13
+ * editor UI state is dropped — nodes lose `selected`/`dragging`/`measured` and
14
+ * edges lose `selected`, all of which xyflow recomputes on mount. The input flow
15
+ * is never mutated, so the live editor canvas keeps its values — only the
16
+ * exported/saved artifact is trimmed, mirroring `stripSensitiveHeadersFromFlow`.
17
+ */
18
+ export declare const cleanFlowData: (flow: Flow) => Flow;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a copy of `data` keeping only the config blocks that belong to
3
+ * `subType` (non-config keys are always kept).
4
+ */
5
+ export declare const cleanConfigForSubType: (data: Record<string, unknown>, subType: string) => Record<string, unknown>;
@@ -0,0 +1,8 @@
1
+ import { Edge, Node } from '@xyflow/react';
2
+ export type LayoutDirection = "TB" | "LR";
3
+ export interface LayoutOptions {
4
+ direction?: LayoutDirection;
5
+ horizontalSpacing?: number;
6
+ verticalSpacing?: number;
7
+ }
8
+ export declare const getLayoutedElements: (nodes: Node[], edges: Edge[], options?: LayoutOptions) => Node[];
@@ -0,0 +1,50 @@
1
+ import { Edge, Node } from '@xyflow/react';
2
+ /**
3
+ * Whether an edge from `source` to `target` already exists in the set.
4
+ * Used to reject duplicate connections.
5
+ */
6
+ export declare const edgeExists: (edges: Edge[], source: string, target: string) => boolean;
7
+ type LeafNode = Pick<Node, "id" | "position" | "parentId">;
8
+ interface BuildConvergenceOptions {
9
+ /** ID for the new common node. */
10
+ commonNodeId: string;
11
+ /** Base node template the common node is spread from (e.g. DEFAULT_NODE). */
12
+ baseNode: Partial<Node>;
13
+ /** Measured node height, used to place the common node below both leaves. */
14
+ nodeHeight: number;
15
+ /** Vertical gap between the leaves and the common node. */
16
+ verticalSpacing: number;
17
+ }
18
+ /**
19
+ * Build the common node that converges two leaves, plus the two edges wiring
20
+ * each leaf to it (`source → common`, `target → common`). The node is centered
21
+ * horizontally between the leaves and placed one row below the lower one. It
22
+ * inherits the group only when both leaves share the same `parentId`.
23
+ *
24
+ * Pure and deterministic — the caller supplies the new node id, base template
25
+ * and measured dimensions — so it can be unit-tested without React Flow.
26
+ */
27
+ export declare const buildConvergence: (sourceNode: LeafNode, targetNode: LeafNode, { commonNodeId, baseNode, nodeHeight, verticalSpacing }: BuildConvergenceOptions) => {
28
+ node: Node;
29
+ edges: Edge[];
30
+ };
31
+ /**
32
+ * Whether adding an edge `source` → `target` would introduce a cycle, i.e.
33
+ * `target` can already reach `source` by following outgoing edges. BFS from
34
+ * `target` over the existing edges; returns true as soon as `source` is found.
35
+ */
36
+ export declare const wouldCreateCycle: (edges: Edge[], source: string, target: string) => boolean;
37
+ /**
38
+ * Re-normalize outgoing edges from a set of affected parent nodes: if a parent
39
+ * now has a single remaining child, convert its outgoing edge back to a
40
+ * "default" type and drop condition-specific data fields.
41
+ *
42
+ * Used after edge or node deletions to keep conditional edges in sync with the
43
+ * presence of siblings.
44
+ *
45
+ * @param edges - The edges remaining after deletion
46
+ * @param affectedParents - Source node IDs whose children changed
47
+ * @returns A new edges array with affected edges normalized
48
+ */
49
+ export declare const normalizeConditionalEdges: (edges: Edge[], affectedParents: Set<string>) => Edge[];
50
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Deterministic color for a group, derived from its id.
3
+ *
4
+ * Why HSL + inline style (rather than a Tailwind class):
5
+ * Tailwind purges classes at build time and can't synthesize `bg-{color}`
6
+ * from a runtime hash. Picking from a fixed palette would cap the number of
7
+ * distinguishable groups; HSL with a hashed hue gives effectively unlimited
8
+ * distinct, stable colors with no Tailwind-side configuration.
9
+ *
10
+ * Saturation/lightness are fixed (65% / 45%) so every group lands in the
11
+ * same readable, mid-contrast band on both light and dark themes — only the
12
+ * hue varies between groups.
13
+ */
14
+ export declare const getGroupColor: (groupId?: string) => string;
@@ -0,0 +1,7 @@
1
+ export declare const MAX_IMAGE_INPUT_BYTES: number;
2
+ /**
3
+ * Converts an image file to a resized JPEG base64 data URL.
4
+ * Rejects files that are not images or exceed MAX_IMAGE_INPUT_BYTES.
5
+ * Dimensions are capped at MAX_DIMENSION × MAX_DIMENSION to keep the JSON small.
6
+ */
7
+ export declare const imageFileToOptimizedDataUrl: (file: File) => Promise<string>;
@@ -0,0 +1,6 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+ /**
3
+ * Returns the Lucide icon associated with an input or UI type.
4
+ * Falls back to DEFAULT_INPUT_TYPE_ICON when no match is found.
5
+ */
6
+ export declare const getInputTypeIcon: (type?: string) => LucideIcon;
@@ -0,0 +1,15 @@
1
+ import { EditorState } from '@codemirror/state';
2
+ export interface JsonBindTarget {
3
+ /** Start offset of the key/value node to replace. */
4
+ from: number;
5
+ /** End offset of the key/value node to replace. */
6
+ to: number;
7
+ /** Whether the node is already a `{{token}}` (so the menu can offer "unbind"). */
8
+ isToken: boolean;
9
+ }
10
+ /**
11
+ * Find the JSON key or value node under `pos`, so a click there can bind a
12
+ * field. Returns the range to replace and whether it is already a token, or
13
+ * `null` when `pos` is not on a key/value (e.g. on punctuation/whitespace).
14
+ */
15
+ export declare const findJsonBindTargetAt: (state: EditorState, pos: number) => JsonBindTarget | null;
@@ -0,0 +1,12 @@
1
+ import { ApiRouteMethod, OpenApiDocument, OpenApiSchema } from '../types/openapi';
2
+ /**
3
+ * Find the JSON request-body schema for the route matching `url` + `method`,
4
+ * or `undefined` when the route has no JSON request body.
5
+ */
6
+ export declare const findRouteRequestSchema: (doc: OpenApiDocument, url: string, method: ApiRouteMethod) => OpenApiSchema | undefined;
7
+ /**
8
+ * Build a JSON skeleton from a schema: uses `example`/`default`/`enum` when
9
+ * present, otherwise a typed placeholder (`""`, `0`, `false`, `{}`, `[…]`).
10
+ * `$ref`s are resolved against `components.schemas`; cyclic refs are cut off.
11
+ */
12
+ export declare const buildPayloadSkeleton: (doc: OpenApiDocument, schema: OpenApiSchema | undefined, seenRefs?: Set<string>) => unknown;
@@ -0,0 +1,35 @@
1
+ import { ApiRoute, OpenApiDocument, OpenApiSecurityScheme } from '../types/openapi';
2
+ /**
3
+ * Type guard validating that `value` is a usable OpenAPI 3.x document.
4
+ * Rejects 2.0 (Swagger) since we don't support it.
5
+ */
6
+ export declare const isOpenApi3Document: (value: unknown) => value is OpenApiDocument;
7
+ /**
8
+ * Load an OpenAPI document from either a remote URL or a raw JSON string.
9
+ * Throws when the input is empty, unreachable, malformed JSON, or not an
10
+ * OpenAPI 3.x document.
11
+ */
12
+ export declare const loadOpenApiDocument: (input: string) => Promise<OpenApiDocument>;
13
+ /**
14
+ * Flatten every (method, path) tuple defined in the document, preserving
15
+ * the path declaration order.
16
+ */
17
+ export declare const extractApiRoutes: (doc: OpenApiDocument) => ApiRoute[];
18
+ /** Returns the first declared server URL (with any trailing slash trimmed). */
19
+ export declare const getBaseUrl: (doc: OpenApiDocument) => string;
20
+ /** Resolve a path to a full URL using the document's first server. */
21
+ export declare const resolveRouteUrl: (doc: OpenApiDocument, path: string) => string;
22
+ /**
23
+ * Extract every supported security scheme from the document. Schemes other
24
+ * than `http+bearer` and `apiKey-in-header` are silently dropped — they're
25
+ * out of MVP scope.
26
+ */
27
+ export declare const extractSecuritySchemes: (doc: OpenApiDocument) => Array<{
28
+ name: string;
29
+ scheme: OpenApiSecurityScheme;
30
+ }>;
31
+ /**
32
+ * Resolve a `tokenUrl` (which the OpenAPI spec sometimes leaves relative)
33
+ * against the document's first declared server URL.
34
+ */
35
+ export declare const resolveTokenUrl: (tokenUrl: string, doc: OpenApiDocument) => string;
@@ -0,0 +1,20 @@
1
+ import { Flow } from '../../shared/types/node';
2
+ import { KeyValueEntry } from '../../shared/utils/httpRecord';
3
+ /** True when a header key is known to carry credentials/secrets. */
4
+ export declare const isSensitiveHeaderKey: (key: string) => boolean;
5
+ /**
6
+ * True when the editor rows contain a sensitive header with a non-empty value.
7
+ * Operates on the form's working rows (which may still hold empty keys) rather
8
+ * than the serialized record, so the warning shows as soon as the user types.
9
+ */
10
+ export declare const hasSensitiveHeader: (headers?: KeyValueEntry[]) => boolean;
11
+ /**
12
+ * Returns a copy of the flow with all credential-bearing field-level headers
13
+ * removed from every node's httpConfig/optionsSource/submitConfig, plus the
14
+ * number of headers stripped. The input flow is never mutated, so the live
15
+ * editor canvas keeps its values — only the exported/saved artifact is cleaned.
16
+ */
17
+ export declare const stripSensitiveHeadersFromFlow: (flow: Flow) => {
18
+ flow: Flow;
19
+ strippedCount: number;
20
+ };
@@ -0,0 +1,9 @@
1
+ import { Edge } from '@xyflow/react';
2
+ export type StackPosition = "single" | "first" | "middle" | "last";
3
+ /**
4
+ * Memoizes the positions map keyed by the edges array reference. React Flow
5
+ * keeps that reference stable between unrelated updates (drag, selection, …),
6
+ * so selectors that read from this map effectively perform a Map lookup
7
+ * outside of edge mutations.
8
+ */
9
+ export declare const getPositions: (edges: Edge[]) => Map<string, StackPosition>;