@qoretechnologies/reqraft 0.10.55-pr.124.g77dd26c → 0.10.55

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 (375) hide show
  1. package/.claude/CLAUDE.md +25 -0
  2. package/.tasks/INDEX.md +1 -0
  3. package/.tasks/STORY_NETWORK_ISOLATION.md +98 -0
  4. package/README.md +1 -1
  5. package/design/FORM_ENGINE_COMPACT.md +34 -0
  6. package/design/FORM_ENGINE_EXPRESSIONS.md +110 -0
  7. package/design/FORM_ENGINE_FIELD_MIGRATION.md +155 -1
  8. package/design/IDE_INTEGRATION.md +13 -0
  9. package/design/RENDER_EXPRESSION_TRANSPORT.md +76 -10
  10. package/design/SELECT_DIALOG_FLOOR.md +86 -0
  11. package/design/SMART_EDITOR_UX.md +21 -0
  12. package/design/UNAVAILABLE_ALLOWED_VALUES.md +226 -0
  13. package/dist/components/composer/Composer.d.ts +8 -3
  14. package/dist/components/composer/Composer.d.ts.map +1 -1
  15. package/dist/components/composer/Composer.js.map +1 -1
  16. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  17. package/dist/components/dpqlEditor/DpqlEditor.js +3 -3
  18. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  19. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +6 -0
  20. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  21. package/dist/components/dpqlEditor/dpqlHelpers.js +21 -2
  22. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  23. package/dist/components/dpqlEditor/dpqlProbe.d.ts +37 -0
  24. package/dist/components/dpqlEditor/dpqlProbe.d.ts.map +1 -0
  25. package/dist/components/dpqlEditor/dpqlProbe.js +203 -0
  26. package/dist/components/dpqlEditor/dpqlProbe.js.map +1 -0
  27. package/dist/components/dpqlEditor/dpqlTags.d.ts +8 -0
  28. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  29. package/dist/components/dpqlEditor/dpqlTags.js +5 -1
  30. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  31. package/dist/components/dpqlEditor/index.d.ts +4 -0
  32. package/dist/components/dpqlEditor/index.d.ts.map +1 -1
  33. package/dist/components/dpqlEditor/index.js +5 -1
  34. package/dist/components/dpqlEditor/index.js.map +1 -1
  35. package/dist/components/dpqlEditor/types.d.ts +42 -2
  36. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  37. package/dist/components/dpqlEditor/types.js +0 -4
  38. package/dist/components/dpqlEditor/types.js.map +1 -1
  39. package/dist/components/dpqlEditor/useDpqlProbe.d.ts +4 -0
  40. package/dist/components/dpqlEditor/useDpqlProbe.d.ts.map +1 -0
  41. package/dist/components/dpqlEditor/useDpqlProbe.js +29 -0
  42. package/dist/components/dpqlEditor/useDpqlProbe.js.map +1 -0
  43. package/dist/components/dpqlEditor/useDpqlSession.d.ts +5 -2
  44. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/useDpqlSession.js +8 -2
  46. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  47. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  48. package/dist/components/form/engine/CompactRow.js +414 -128
  49. package/dist/components/form/engine/CompactRow.js.map +1 -1
  50. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  51. package/dist/components/form/engine/CompactToolbar.js +5 -2
  52. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  53. package/dist/components/form/engine/FormEngine.d.ts +273 -22
  54. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  55. package/dist/components/form/engine/FormEngine.js +669 -192
  56. package/dist/components/form/engine/FormEngine.js.map +1 -1
  57. package/dist/components/form/engine/FormFieldsSkeleton.d.ts +48 -0
  58. package/dist/components/form/engine/FormFieldsSkeleton.d.ts.map +1 -0
  59. package/dist/components/form/engine/FormFieldsSkeleton.js +41 -0
  60. package/dist/components/form/engine/FormFieldsSkeleton.js.map +1 -0
  61. package/dist/components/form/engine/OptionFieldMessages.d.ts +108 -2
  62. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  63. package/dist/components/form/engine/OptionFieldMessages.js +203 -13
  64. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  65. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  66. package/dist/components/form/engine/_structuredData/SchemaDataView.js +68 -5
  67. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  68. package/dist/components/form/engine/compactRowContext.d.ts +15 -1
  69. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  70. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  71. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  72. package/dist/components/form/engine/compactRowStyles.js +55 -29
  73. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  74. package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
  75. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  76. package/dist/components/form/engine/optionActions.d.ts +37 -1
  77. package/dist/components/form/engine/optionActions.d.ts.map +1 -1
  78. package/dist/components/form/engine/optionActions.js +71 -1
  79. package/dist/components/form/engine/optionActions.js.map +1 -1
  80. package/dist/components/form/engine/optionsContext.d.ts +22 -0
  81. package/dist/components/form/engine/optionsContext.d.ts.map +1 -0
  82. package/dist/components/form/engine/optionsContext.js +20 -0
  83. package/dist/components/form/engine/optionsContext.js.map +1 -0
  84. package/dist/components/form/engine/readFirst.d.ts +42 -1
  85. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  86. package/dist/components/form/engine/readFirst.js +76 -8
  87. package/dist/components/form/engine/readFirst.js.map +1 -1
  88. package/dist/components/form/engine/rendererTypes.d.ts +42 -3
  89. package/dist/components/form/engine/rendererTypes.d.ts.map +1 -1
  90. package/dist/components/form/engine/rendererTypes.js +3 -1
  91. package/dist/components/form/engine/rendererTypes.js.map +1 -1
  92. package/dist/components/form/engine/rowFocus.d.ts +30 -0
  93. package/dist/components/form/engine/rowFocus.d.ts.map +1 -0
  94. package/dist/components/form/engine/rowFocus.js +93 -0
  95. package/dist/components/form/engine/rowFocus.js.map +1 -0
  96. package/dist/components/form/engine/rowMenuContext.d.ts +78 -0
  97. package/dist/components/form/engine/rowMenuContext.d.ts.map +1 -0
  98. package/dist/components/form/engine/rowMenuContext.js +103 -0
  99. package/dist/components/form/engine/rowMenuContext.js.map +1 -0
  100. package/dist/components/form/engine/rowOpenPicker.d.ts +27 -0
  101. package/dist/components/form/engine/rowOpenPicker.d.ts.map +1 -0
  102. package/dist/components/form/engine/rowOpenPicker.js +30 -0
  103. package/dist/components/form/engine/rowOpenPicker.js.map +1 -0
  104. package/dist/components/form/engine/typeChoices.d.ts +42 -0
  105. package/dist/components/form/engine/typeChoices.d.ts.map +1 -0
  106. package/dist/components/form/engine/typeChoices.js +33 -0
  107. package/dist/components/form/engine/typeChoices.js.map +1 -0
  108. package/dist/components/form/expressions/DpqlRendering.d.ts +26 -0
  109. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -0
  110. package/dist/components/form/expressions/DpqlRendering.js +53 -0
  111. package/dist/components/form/expressions/DpqlRendering.js.map +1 -0
  112. package/dist/components/form/expressions/ExpressionField.d.ts +7 -1
  113. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  114. package/dist/components/form/expressions/ExpressionField.js +203 -45
  115. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  116. package/dist/components/form/expressions/argumentPresence.d.ts +84 -0
  117. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -0
  118. package/dist/components/form/expressions/argumentPresence.js +217 -0
  119. package/dist/components/form/expressions/argumentPresence.js.map +1 -0
  120. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentLabel.js +9 -4
  122. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  123. package/dist/components/form/expressions/builder/index.d.ts +15 -2
  124. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  125. package/dist/components/form/expressions/builder/index.js +21 -65
  126. package/dist/components/form/expressions/builder/index.js.map +1 -1
  127. package/dist/components/form/expressions/builder/renderTemplate.d.ts +4 -1
  128. package/dist/components/form/expressions/builder/renderTemplate.d.ts.map +1 -1
  129. package/dist/components/form/expressions/builder/renderTemplate.js +10 -67
  130. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  131. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  132. package/dist/components/form/expressions/mockExpressions.js +8 -4
  133. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  134. package/dist/components/form/expressions/renderExpressionToText.d.ts +1 -1
  135. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  136. package/dist/components/form/expressions/renderExpressionToText.js +95 -19
  137. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  138. package/dist/components/form/expressions/types.d.ts +17 -2
  139. package/dist/components/form/expressions/types.d.ts.map +1 -1
  140. package/dist/components/form/expressions/useExpressions.d.ts.map +1 -1
  141. package/dist/components/form/expressions/useExpressions.js +5 -2
  142. package/dist/components/form/expressions/useExpressions.js.map +1 -1
  143. package/dist/components/form/expressions/useRenderExpression.d.ts +7 -16
  144. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  145. package/dist/components/form/expressions/useRenderExpression.js +50 -126
  146. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  147. package/dist/components/form/fields/Field.d.ts +21 -0
  148. package/dist/components/form/fields/Field.d.ts.map +1 -1
  149. package/dist/components/form/fields/Field.js +54 -8
  150. package/dist/components/form/fields/Field.js.map +1 -1
  151. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +11 -1
  152. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  153. package/dist/components/form/fields/allowed-values/AllowedValues.js +52 -8
  154. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  155. package/dist/components/form/fields/auto/AutoFormField.d.ts +7 -1
  156. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  157. package/dist/components/form/fields/auto/AutoFormField.js +91 -28
  158. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  159. package/dist/components/form/fields/date/Date.d.ts +1 -1
  160. package/dist/components/form/fields/date/Date.d.ts.map +1 -1
  161. package/dist/components/form/fields/date/Date.js +16 -2
  162. package/dist/components/form/fields/date/Date.js.map +1 -1
  163. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  164. package/dist/components/form/fields/long-string/LongString.js +14 -2
  165. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  166. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  167. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +50 -4
  168. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  169. package/dist/components/form/fields/number/Number.d.ts +12 -1
  170. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  171. package/dist/components/form/fields/number/Number.js +6 -3
  172. package/dist/components/form/fields/number/Number.js.map +1 -1
  173. package/dist/components/form/fields/rich-text/RichText.d.ts +47 -2
  174. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  175. package/dist/components/form/fields/rich-text/RichText.js +153 -12
  176. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  177. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  178. package/dist/components/form/fields/select/Select.js +120 -20
  179. package/dist/components/form/fields/select/Select.js.map +1 -1
  180. package/dist/components/form/fields/select/SelectCollection.d.ts +166 -9
  181. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  182. package/dist/components/form/fields/select/SelectCollection.js +200 -7
  183. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  184. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +2 -1
  185. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  186. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +3 -2
  187. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  188. package/dist/components/form/fields/template/TemplateField.d.ts +34 -2
  189. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  190. package/dist/components/form/fields/template/TemplateField.js +606 -58
  191. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  192. package/dist/components/form/fields/template/TemplateText.d.ts +36 -0
  193. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -0
  194. package/dist/components/form/fields/template/TemplateText.js +80 -0
  195. package/dist/components/form/fields/template/TemplateText.js.map +1 -0
  196. package/dist/components/form/index.d.ts +2 -0
  197. package/dist/components/form/index.d.ts.map +1 -1
  198. package/dist/components/form/index.js +4 -0
  199. package/dist/components/form/index.js.map +1 -1
  200. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  201. package/dist/components/smartEditor/SmartEditor.js +29 -8
  202. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  203. package/dist/components/smartEditor/useLspSession.d.ts +5 -1
  204. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  205. package/dist/components/smartEditor/useLspSession.js +16 -2
  206. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  207. package/dist/components/supportTicket/TicketReplyBox.d.ts +8 -4
  208. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  209. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  210. package/dist/helpers/common.d.ts.map +1 -1
  211. package/dist/helpers/common.js +7 -3
  212. package/dist/helpers/common.js.map +1 -1
  213. package/dist/helpers/dpqlDetection.d.ts +58 -0
  214. package/dist/helpers/dpqlDetection.d.ts.map +1 -0
  215. package/dist/helpers/dpqlDetection.js +164 -0
  216. package/dist/helpers/dpqlDetection.js.map +1 -0
  217. package/dist/helpers/optionUiTypes.d.ts +31 -3
  218. package/dist/helpers/optionUiTypes.d.ts.map +1 -1
  219. package/dist/helpers/optionUiTypes.js +36 -1
  220. package/dist/helpers/optionUiTypes.js.map +1 -1
  221. package/dist/helpers/options.d.ts +57 -0
  222. package/dist/helpers/options.d.ts.map +1 -1
  223. package/dist/helpers/options.js +97 -1
  224. package/dist/helpers/options.js.map +1 -1
  225. package/dist/helpers/templateItems.d.ts +47 -0
  226. package/dist/helpers/templateItems.d.ts.map +1 -0
  227. package/dist/helpers/templateItems.js +88 -0
  228. package/dist/helpers/templateItems.js.map +1 -0
  229. package/dist/helpers/templateText.d.ts +80 -0
  230. package/dist/helpers/templateText.d.ts.map +1 -0
  231. package/dist/helpers/templateText.js +291 -0
  232. package/dist/helpers/templateText.js.map +1 -0
  233. package/dist/helpers/templates.d.ts +30 -12
  234. package/dist/helpers/templates.d.ts.map +1 -1
  235. package/dist/helpers/templates.js +91 -33
  236. package/dist/helpers/templates.js.map +1 -1
  237. package/dist/helpers/validations.d.ts +35 -8
  238. package/dist/helpers/validations.d.ts.map +1 -1
  239. package/dist/helpers/validations.js +162 -25
  240. package/dist/helpers/validations.js.map +1 -1
  241. package/dist/hooks/useArgSchema.d.ts +2 -1
  242. package/dist/hooks/useArgSchema.d.ts.map +1 -1
  243. package/dist/hooks/useFetch/useFetch.d.ts +3 -1
  244. package/dist/hooks/useFetch/useFetch.d.ts.map +1 -1
  245. package/dist/hooks/useFetch/useFetch.js +47 -9
  246. package/dist/hooks/useFetch/useFetch.js.map +1 -1
  247. package/dist/hooks/useTemplates.d.ts +20 -0
  248. package/dist/hooks/useTemplates.d.ts.map +1 -1
  249. package/dist/hooks/useTemplates.js +34 -2
  250. package/dist/hooks/useTemplates.js.map +1 -1
  251. package/dist/index.d.ts +2 -1
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +5 -1
  254. package/dist/index.js.map +1 -1
  255. package/dist/utils/fetch.d.ts +151 -1
  256. package/dist/utils/fetch.d.ts.map +1 -1
  257. package/dist/utils/fetch.js +256 -44
  258. package/dist/utils/fetch.js.map +1 -1
  259. package/dist/utils/lspClient.d.ts +6 -0
  260. package/dist/utils/lspClient.d.ts.map +1 -1
  261. package/dist/utils/lspClient.js +62 -11
  262. package/dist/utils/lspClient.js.map +1 -1
  263. package/dist/utils/websocket.d.ts +6 -0
  264. package/dist/utils/websocket.d.ts.map +1 -1
  265. package/dist/utils/websocket.js +15 -7
  266. package/dist/utils/websocket.js.map +1 -1
  267. package/package.json +10 -6
  268. package/src/components/composer/Composer.tsx +7 -2
  269. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +3 -119
  270. package/src/components/dpqlEditor/DpqlEditor.tsx +5 -2
  271. package/src/components/dpqlEditor/dpqlHelpers.ts +20 -1
  272. package/src/components/dpqlEditor/dpqlProbe.ts +165 -0
  273. package/src/components/dpqlEditor/dpqlTags.ts +13 -0
  274. package/src/components/dpqlEditor/index.ts +4 -0
  275. package/src/components/dpqlEditor/types.ts +38 -2
  276. package/src/components/dpqlEditor/useDpqlProbe.ts +33 -0
  277. package/src/components/dpqlEditor/useDpqlSession.ts +20 -4
  278. package/src/components/form/engine/CompactRow.tsx +487 -160
  279. package/src/components/form/engine/CompactToolbar.tsx +10 -3
  280. package/src/components/form/engine/FormEngine.stories.tsx +1269 -211
  281. package/src/components/form/engine/FormEngine.tsx +922 -270
  282. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +331 -0
  283. package/src/components/form/engine/FormFieldsSkeleton.tsx +77 -0
  284. package/src/components/form/engine/OptionFieldMessages.tsx +300 -14
  285. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +94 -3
  286. package/src/components/form/engine/compactRowContext.ts +15 -6
  287. package/src/components/form/engine/compactRowStyles.ts +56 -2
  288. package/src/components/form/engine/compactToolbarContext.ts +1 -1
  289. package/src/components/form/engine/optionActions.ts +89 -1
  290. package/src/components/form/engine/optionsContext.ts +24 -0
  291. package/src/components/form/engine/readFirst.ts +88 -8
  292. package/src/components/form/engine/rendererTypes.ts +48 -4
  293. package/src/components/form/engine/rowFocus.ts +101 -0
  294. package/src/components/form/engine/rowMenuContext.ts +159 -0
  295. package/src/components/form/engine/rowOpenPicker.ts +27 -0
  296. package/src/components/form/engine/typeChoices.ts +63 -0
  297. package/src/components/form/expressions/DpqlRendering.tsx +85 -0
  298. package/src/components/form/expressions/ExpressionField.stories.tsx +826 -48
  299. package/src/components/form/expressions/ExpressionField.tsx +269 -55
  300. package/src/components/form/expressions/argumentPresence.ts +213 -0
  301. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +38 -21
  302. package/src/components/form/expressions/builder/argumentLabel.tsx +10 -4
  303. package/src/components/form/expressions/builder/index.tsx +39 -81
  304. package/src/components/form/expressions/builder/renderTemplate.tsx +23 -56
  305. package/src/components/form/expressions/dpqlMockLanguage.ts +565 -0
  306. package/src/components/form/expressions/dpqlMockLsp.ts +109 -83
  307. package/src/components/form/expressions/mockExpressions.ts +8 -4
  308. package/src/components/form/expressions/renderExpressionToText.ts +112 -22
  309. package/src/components/form/expressions/types.ts +17 -2
  310. package/src/components/form/expressions/useExpressions.ts +5 -1
  311. package/src/components/form/expressions/useRenderExpression.ts +43 -127
  312. package/src/components/form/fields/Field.tsx +102 -20
  313. package/src/components/form/fields/allowed-values/AllowedValues.tsx +106 -44
  314. package/src/components/form/fields/auto/AutoFormField.stories.tsx +85 -18
  315. package/src/components/form/fields/auto/AutoFormField.tsx +97 -21
  316. package/src/components/form/fields/date/Date.tsx +17 -1
  317. package/src/components/form/fields/long-string/LongString.tsx +15 -3
  318. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +65 -6
  319. package/src/components/form/fields/number/Number.tsx +25 -0
  320. package/src/components/form/fields/rich-text/RichText.tsx +248 -30
  321. package/src/components/form/fields/select/Select.stories.tsx +392 -0
  322. package/src/components/form/fields/select/Select.tsx +164 -27
  323. package/src/components/form/fields/select/SelectCollection.tsx +350 -6
  324. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +4 -2
  325. package/src/components/form/fields/template/TemplateField.stories.tsx +93 -14
  326. package/src/components/form/fields/template/TemplateField.tsx +825 -131
  327. package/src/components/form/fields/template/TemplateText.tsx +115 -0
  328. package/src/components/form/index.tsx +4 -0
  329. package/src/components/log/Log.stories.tsx +2 -1
  330. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +3 -3
  331. package/src/components/smartEditor/SmartEditor.tsx +41 -9
  332. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +52 -3
  333. package/src/components/smartEditor/useLspSession.ts +21 -3
  334. package/src/components/supportTicket/TicketReplyBox.tsx +8 -4
  335. package/src/components/ticketThread/TicketThread.stories.tsx +1 -0
  336. package/src/helpers/common.ts +7 -3
  337. package/src/helpers/dpqlDetection.ts +209 -0
  338. package/src/helpers/optionUiTypes.ts +38 -0
  339. package/src/helpers/options.ts +96 -0
  340. package/src/helpers/templateItems.ts +81 -0
  341. package/src/helpers/templateText.ts +350 -0
  342. package/src/helpers/templates.ts +94 -41
  343. package/src/helpers/validations.ts +203 -51
  344. package/src/hooks/useFetch/useFetch.stories.tsx +6 -5
  345. package/src/hooks/useFetch/useFetch.tsx +53 -7
  346. package/src/hooks/useStorage/useStorage.stories.tsx +2 -1
  347. package/src/hooks/useTemplates.ts +41 -0
  348. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +2 -1
  349. package/src/index.tsx +14 -1
  350. package/src/stores/currentUser/currentUser.stories.tsx +2 -1
  351. package/src/stories/storyNetwork.ts +92 -0
  352. package/src/utils/fetch.ts +311 -21
  353. package/src/utils/lspClient.ts +68 -11
  354. package/src/utils/websocket.ts +20 -9
  355. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts +0 -73
  356. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts.map +0 -1
  357. package/dist/components/form/engine/__fixtures__/basicFormOptions.js +0 -317
  358. package/dist/components/form/engine/__fixtures__/basicFormOptions.js.map +0 -1
  359. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts +0 -41
  360. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts.map +0 -1
  361. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js +0 -45
  362. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js.map +0 -1
  363. package/dist/components/form/expressions/dpqlMockLsp.d.ts +0 -3
  364. package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +0 -1
  365. package/dist/components/form/expressions/dpqlMockLsp.js +0 -91
  366. package/dist/components/form/expressions/dpqlMockLsp.js.map +0 -1
  367. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts +0 -2
  368. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts.map +0 -1
  369. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js +0 -9
  370. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js.map +0 -1
  371. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +0 -55
  372. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +0 -1
  373. package/dist/components/smartEditor/__fixtures__/mockLspServer.js +0 -126
  374. package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +0 -1
  375. package/dist/stories/Data/fileFieldArgSchema.json +0 -86
@@ -20,7 +20,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
20
20
  return to.concat(ar || Array.prototype.slice.call(from));
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.buildTemplates = exports.filterTemplatesByType = exports.splitTemplateTokens = exports.describeTemplateReference = exports.getTemplateReferencePath = exports.resolveTemplateLabel = exports.findTemplate = exports.findTemplateByPath = exports.isBracedTemplateToken = exports.isCompleteTemplateToken = exports.TEMPLATE_TOKEN_SOURCE = exports.getTemplateValue = exports.getTemplateKey = exports.isValueTemplate = exports.getTemplateTagStyle = exports.TEMPLATE_EXAMPLE_PREVIEW_LENGTH = void 0;
23
+ exports.buildTemplates = exports.filterTemplatesByType = exports.templateTooltip = exports.describeTemplateReference = exports.getTemplateReferencePath = exports.resolveTemplateLabel = exports.findTemplate = exports.findTemplateByPath = exports.isBracedTemplateToken = exports.isCompleteTemplateToken = exports.TEMPLATE_TOKEN_SOURCE = exports.getTemplateValue = exports.getTemplateKey = exports.isValueTemplate = exports.getTemplateTagStyle = exports.TEMPLATE_EXAMPLE_PREVIEW_LENGTH = void 0;
24
24
  var reqore_1 = require("@qoretechnologies/reqore");
25
25
  var lodash_1 = require("lodash");
26
26
  var react_1 = require("react");
@@ -36,6 +36,25 @@ var expressions_1 = require("./expressions");
36
36
  * paired with the "?" action that shows the full value.
37
37
  */
38
38
  exports.TEMPLATE_EXAMPLE_PREVIEW_LENGTH = 150;
39
+ /**
40
+ * How template picker entries are ordered: by the label a reader actually sees.
41
+ *
42
+ * The server sends groups and their items in whatever order it assembled them —
43
+ * for the test vocabulary that is step order, for an app's actions it is the
44
+ * connector's own. Neither is an order a reader can predict, and a picker
45
+ * holding 29 items is navigated by looking for a NAME.
46
+ *
47
+ * `localeCompare` with `numeric` so `item2` sorts before `item10`, and
48
+ * `sensitivity: 'base'` so case and accents do not split otherwise-adjacent
49
+ * neighbours.
50
+ */
51
+ var byLabel = function (a, b) {
52
+ var _a, _b;
53
+ return String((_a = a === null || a === void 0 ? void 0 : a.label) !== null && _a !== void 0 ? _a : '').localeCompare(String((_b = b === null || b === void 0 ? void 0 : b.label) !== null && _b !== void 0 ? _b : ''), undefined, {
54
+ numeric: true,
55
+ sensitivity: 'base',
56
+ });
57
+ };
39
58
  var getTemplateTagStyle = function (meta) {
40
59
  if (meta === null || meta === void 0 ? void 0 : meta.isEventTrigger)
41
60
  return { intent: 'success' };
@@ -114,9 +133,40 @@ var matchesTemplateValue = function (item, value) {
114
133
  };
115
134
  /** Splits `$data:{a.b.c}` into its key (`$data`) and inner path (`a.b.c`). */
116
135
  var TEMPLATE_TOKEN_PATH = /^(\$[A-Za-z_][\w-]*):\{(.*)\}$/;
136
+ /**
137
+ * The KEY-LESS spelling — `$.create.status`, `$._case.mode`, `$.order[0].sku`.
138
+ *
139
+ * A host may name its own references without a key and without braces: a Qorus
140
+ * test reads what a step captured as `$.create`, and that is the whole token.
141
+ * The path is captured WITH its leading `.`, so a prefix comparison is between
142
+ * two strings of the same shape and `$.create` still ends at a path boundary
143
+ * inside `$.create.status`.
144
+ *
145
+ * Deliberately strict — a root segment, then any number of further `.field`
146
+ * steps and `[0]` indices, and nothing else — so it cannot claim a keyed token
147
+ * (which carries a `:`) or a bare `$word`.
148
+ */
149
+ var KEYLESS_TOKEN_PATH = /^\$((?:\.[A-Za-z_][\w-]*|\[\d+\])+)$/;
150
+ /**
151
+ * "No key" is a key of its own.
152
+ *
153
+ * `findTemplateByPath` refuses to name a value from an item under a different
154
+ * key, and the key-less grammar has to take part in that rule rather than sit
155
+ * outside it: a `$data:{create.status}` item must not name `$.create.status`,
156
+ * and a `$.create` item must not name `$data:{create.status}`. Every keyed
157
+ * token's key begins with `$`, so the empty string can never collide with one.
158
+ */
159
+ var NO_TOKEN_KEY = '';
117
160
  var getTokenPath = function (value) {
118
- var match = typeof value === 'string' ? TEMPLATE_TOKEN_PATH.exec(value) : null;
119
- return match ? { key: match[1], path: match[2] } : undefined;
161
+ if (typeof value !== 'string') {
162
+ return undefined;
163
+ }
164
+ var keyed = TEMPLATE_TOKEN_PATH.exec(value);
165
+ if (keyed) {
166
+ return { key: keyed[1], path: keyed[2] };
167
+ }
168
+ var keyless = KEYLESS_TOKEN_PATH.exec(value);
169
+ return keyless ? { key: NO_TOKEN_KEY, path: keyless[1] } : undefined;
120
170
  };
121
171
  /**
122
172
  * The longest catalogue item whose path is a PREFIX of `value`, plus the part
@@ -131,7 +181,12 @@ var getTokenPath = function (value) {
131
181
  *
132
182
  * The match must break at a path boundary (`.` or `[`) so `choicesOther` is
133
183
  * never named after `choices`, and the token keys must agree so a `$config:`
134
- * item never names a `$data:` value.
184
+ * item never names a `$data:` value — "no key" included, so the key-less
185
+ * grammar and the keyed one never name each other's references.
186
+ *
187
+ * Both grammars arrive here: `$data:{create.choices[0]}` and the key-less
188
+ * `$.create.status` are the same question asked in two spellings, and a
189
+ * catalogue written in either one names the walks its author took past it.
135
190
  */
136
191
  var findTemplateByPath = function (templates, value) {
137
192
  var ref = getTokenPath(value);
@@ -229,8 +284,13 @@ exports.resolveTemplateLabel = resolveTemplateLabel;
229
284
  * never fetches one), and there the raw token is the only thing left to show.
230
285
  * Showing it as `$data:{…}` renders a value as code; showing the path renders
231
286
  * it as a name, which is the honest floor.
287
+ *
288
+ * Only a BRACED wrapper is stripped, because only a braced wrapper is one.
289
+ * A key-less `$._case.mode` stripped of its `$` reads as `._case.mode`, which
290
+ * is neither the reference nor a name for it; with nothing to call it, the
291
+ * reference as written is the honest answer.
232
292
  */
233
- var getTemplateReferencePath = function (value) { var _a, _b; return (_b = (_a = getTokenPath(value)) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : value; };
293
+ var getTemplateReferencePath = function (value) { var _a, _b; return (_b = (typeof value === 'string' ? (_a = TEMPLATE_TOKEN_PATH.exec(value)) === null || _a === void 0 ? void 0 : _a[2] : undefined)) !== null && _b !== void 0 ? _b : value; };
234
294
  exports.getTemplateReferencePath = getTemplateReferencePath;
235
295
  /**
236
296
  * The best available name for a reference, for a surface that must show
@@ -244,35 +304,33 @@ var describeTemplateReference = function (templates, value) {
244
304
  return resolved.item ? resolved : { label: (0, exports.getTemplateReferencePath)(value) };
245
305
  };
246
306
  exports.describeTemplateReference = describeTemplateReference;
247
- var EMBEDDED_TEMPLATE_TOKEN = new RegExp(exports.TEMPLATE_TOKEN_SOURCE, 'g');
248
307
  /**
249
- * Splits prose that embeds template tokens into its literal and token parts —
250
- * `trim("$data:{…}")` becomes `trim("`, the token, `")`. Used to chip the
251
- * references inside a rendered expression instead of printing them raw.
308
+ * What a chosen template's hover should say.
309
+ *
310
+ * The reference itself — `$._case.title`, `$data:{dc_ai_reply.choices[0]…}` —
311
+ * is an implementation detail of the grammar, and it was what every template
312
+ * chip put in its tooltip. An author hovering a chip wants to know WHAT VALUE
313
+ * this is, and the catalogue already carries that: the entry's `description`
314
+ * is the prose the picker lists it under, written from the schema that declares
315
+ * it, with its type appended.
316
+ *
317
+ * So the hover reads as a small card — the value's name as the title, its
318
+ * description as the body — and the path stays where it is genuinely needed:
319
+ * the field's own help, which teaches the grammar with a worked example, and
320
+ * the picker, for the walks no list can hold.
321
+ *
322
+ * Falls back to the resolved label (itself the stripped path when the catalogue
323
+ * explains nothing), because a surface with no catalogue must still say what
324
+ * the value is rather than nothing at all.
252
325
  */
253
- var splitTemplateTokens = function (text) {
254
- if (!text) {
255
- return [];
256
- }
257
- var segments = [];
258
- var lastIndex = 0;
259
- // A fresh regex per call: a shared /g instance carries `lastIndex` between
260
- // calls and would skip tokens on the second string it is given.
261
- var pattern = new RegExp(EMBEDDED_TEMPLATE_TOKEN.source, 'g');
262
- var match;
263
- while ((match = pattern.exec(text)) !== null) {
264
- if (match.index > lastIndex) {
265
- segments.push({ kind: 'text', text: text.slice(lastIndex, match.index) });
266
- }
267
- segments.push({ kind: 'token', text: match[0] });
268
- lastIndex = match.index + match[0].length;
269
- }
270
- if (lastIndex < text.length) {
271
- segments.push({ kind: 'text', text: text.slice(lastIndex) });
272
- }
273
- return segments;
326
+ var templateTooltip = function (templates, value) {
327
+ var _a = (0, exports.describeTemplateReference)(templates, value), label = _a.label, item = _a.item;
328
+ var description = item === null || item === void 0 ? void 0 : item.description;
329
+ return typeof description === 'string' && description.trim() ?
330
+ { title: label, content: description, maxWidth: '360px' }
331
+ : label || value;
274
332
  };
275
- exports.splitTemplateTokens = splitTemplateTokens;
333
+ exports.templateTooltip = templateTooltip;
276
334
  // Ported verbatim from qorus-ide `helpers/functions.tsx` (FIELD_STACK_REPORT
277
335
  // batch) — the previous reqraft version used naive badge equality; the IDE
278
336
  // routes compatibility through `areQorusTypesCompatible` (int↔string coercion
@@ -393,7 +451,7 @@ var buildTemplates = function (templates) {
393
451
  };
394
452
  }
395
453
  return item;
396
- });
454
+ }).sort(byLabel);
397
455
  };
398
456
  return {
399
457
  items: Object.values(templates).map(function (_a) {
@@ -413,7 +471,7 @@ var buildTemplates = function (templates) {
413
471
  },
414
472
  items: mapTemplates(items, app, action, logo, display_name, builtin, is_event_trigger, data_role),
415
473
  });
416
- }),
474
+ }).sort(byLabel),
417
475
  };
418
476
  };
419
477
  exports.buildTemplates = buildTemplates;
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/helpers/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/helpers/templates.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,24 @@ interface IFieldValidationProps {
26
26
  * mapped onto the corresponding `has_to_be_*` flags. */
27
27
  rules?: string[];
28
28
  validation_regex?: string;
29
+ /**
30
+ * The inclusive bounds a numeric field accepts — read only by the `int`, `float`
31
+ * and `number` validators.
32
+ *
33
+ * Declared here rather than imported because ts-toolkit still does not carry them:
34
+ * 0.5.82 added the allowed-value and message members reqraft was waiting on, but
35
+ * `IQorusFormFieldSchemaBase` has no numeric bound. These two collapse into the
36
+ * imported type once it does — unlike the allowed-value shapes, which stay local
37
+ * for a reason of their own.
38
+ *
39
+ * The server declares a bound only where that same bound is already enforced on the
40
+ * write (`MetaFieldInfo::min_value`), so refusing a value here turns an error the
41
+ * author would otherwise meet on save into one they meet while the field is still on
42
+ * screen. It never enforces the bound, and it never refuses a value the server would
43
+ * have accepted.
44
+ */
45
+ min_value?: number;
46
+ max_value?: number;
29
47
  required_groups?: string[];
30
48
  optionSchema?: IQorusFormSchema;
31
49
  /** The sibling option VALUES, for required-group and dependency checks.
@@ -134,21 +152,30 @@ export declare const getUnresolvedRequiredOptions: (optionSchema?: IQorusFormSch
134
152
  /**
135
153
  * Split a dependency entry into the sibling it names and how its value is compared.
136
154
  *
137
- * Three forms: `name` (the sibling must simply have a value), `name=value` (it must
138
- * have exactly that value) and `name!=value` (it must have a value, and not that
139
- * one). The negative form is what lets a field say it applies to every variant of a
140
- * record but one — spelling that as an `any-of` list of every other variant is both
141
- * unreadable in the "Depends on" lock and silently wrong the moment a variant is
142
- * added.
155
+ * Four forms: `name` (the sibling must simply have a value), `!name` (it must have
156
+ * none), `name=value` (it must have exactly that value) and `name!=value` (it must
157
+ * have a value, and not that one). The negative comparison is what lets a field say
158
+ * it applies to every variant of a record but one — spelling that as an `any-of`
159
+ * list of every other variant is both unreadable in the "Depends on" lock and
160
+ * silently wrong the moment a variant is added.
143
161
  *
144
162
  * `!=` deliberately requires the sibling to be answered: "not X" is a statement about
145
163
  * an answer, so an unanswered sibling does not satisfy it and the field stays locked.
164
+ *
165
+ * `!name` is the form that statement cannot make. Two options that exclude one
166
+ * another (a converter that reads NodeSet2 and one that writes OpenAPI 3) each
167
+ * apply only while the OTHER has not been answered at all, and `name!=value` cannot
168
+ * say that: it requires an answer. Being a predicate like any other, it composes
169
+ * with the AND of the top-level entries and the OR of a nested list for free.
170
+ *
171
+ * `!` binds to the whole entry, so `!name` never carries a value; `!=` is checked
172
+ * first, which is what keeps `name!=value` from being read as a leading `!`.
146
173
  */
147
174
  export declare const parseDependency: (dependency: string) => {
148
175
  name: string;
149
- op?: '=' | '!=';
176
+ op?: '=' | '!=' | '!';
150
177
  value?: string;
151
178
  };
152
- export declare const hasAllDependenciesFullfilled: (dependencies: string[] | string[][], options: TQorusForm, optionsSchema?: IQorusFormSchema) => boolean;
179
+ export declare const hasAllDependenciesFullfilled: (dependencies: ReadonlyArray<string | readonly string[]>, options: TQorusForm, optionsSchema?: IQorusFormSchema) => boolean;
153
180
  export {};
154
181
  //# sourceMappingURL=validations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/helpers/validations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/helpers/validations.ts"],"names":[],"mappings":"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"}
@@ -127,6 +127,39 @@ var withContext = function (result, context) {
127
127
  var resultFromBoolean = function (isValid, reason) {
128
128
  return isValid ? validResult() : invalidResult(reason);
129
129
  };
130
+ /**
131
+ * Whether the value is a number at all — the check the `number` and `float` cases both
132
+ * make before any bound is read. Shared because the two differ only in the wording of
133
+ * the refusal, and a predicate that drifted between them would leave one of the pair
134
+ * accepting what the other refuses.
135
+ */
136
+ var isNumericValue = function (value) {
137
+ return !(0, isNaN_1.default)(value) && ((0, exports.getTypeFromValue)(value) === 'float' || (0, exports.getTypeFromValue)(value) === 'int');
138
+ };
139
+ /**
140
+ * The schema-declared range for a value that is already the right kind of number.
141
+ *
142
+ * Both bounds are inclusive and either may stand alone — the server declares only the
143
+ * side it can point at an enforcing line for, so a count with a floor and no ceiling
144
+ * arrives with `min_value` alone. A bound that is not a finite number is ignored rather
145
+ * than treated as zero: a schema that says nothing must not refuse everything.
146
+ *
147
+ * Kept out of the type checks above it so the reason a value is refused says which
148
+ * thing is wrong — "must be a whole number" and "must be at least 1" are different
149
+ * corrections, and collapsing them into one message makes the author guess.
150
+ */
151
+ var checkNumericBounds = function (value, field) {
152
+ var num = Number(value);
153
+ var min = field === null || field === void 0 ? void 0 : field.min_value;
154
+ var max = field === null || field === void 0 ? void 0 : field.max_value;
155
+ if (typeof min === 'number' && Number.isFinite(min) && num < min) {
156
+ return invalidResult("Value must be ".concat(min, " or more"));
157
+ }
158
+ if (typeof max === 'number' && Number.isFinite(max) && num > max) {
159
+ return invalidResult("Value must be ".concat(max, " or less"));
160
+ }
161
+ return validResult();
162
+ };
130
163
  var isRichTextWithoutValue = function (value) {
131
164
  return (value === undefined ||
132
165
  value === '' ||
@@ -139,7 +172,7 @@ var isValueDefined = function (type, value) {
139
172
  return value !== undefined && value !== '';
140
173
  };
141
174
  var _validateField = function (type, value, field, canBeNull) {
142
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
175
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
143
176
  if (!type) {
144
177
  if (value === undefined || value === null) {
145
178
  return invalidResult('Missing value');
@@ -437,12 +470,21 @@ var _validateField = function (type, value, field, canBeNull) {
437
470
  return valid ? validResult() : invalidResult(undefined, reasons);
438
471
  }
439
472
  case 'number': {
440
- return resultFromBoolean(!(0, isNaN_1.default)(value) && ((0, exports.getTypeFromValue)(value) === 'float' || (0, exports.getTypeFromValue)(value) === 'int'), 'Value must be a number');
473
+ if (!isNumericValue(value)) {
474
+ return invalidResult('Value must be a number');
475
+ }
476
+ return checkNumericBounds(value, field);
441
477
  }
442
478
  case 'int':
443
- return resultFromBoolean(!Number.isNaN(value) && (0, exports.getTypeFromValue)(value) === 'int', 'Value must be an integer');
479
+ if (!(!Number.isNaN(value) && (0, exports.getTypeFromValue)(value) === 'int')) {
480
+ return invalidResult('Value must be an integer');
481
+ }
482
+ return checkNumericBounds(value, field);
444
483
  case 'float':
445
- return resultFromBoolean(!(0, isNaN_1.default)(value) && ((0, exports.getTypeFromValue)(value) === 'float' || (0, exports.getTypeFromValue)(value) === 'int'), 'Value must be a float');
484
+ if (!isNumericValue(value)) {
485
+ return invalidResult('Value must be a float');
486
+ }
487
+ return checkNumericBounds(value, field);
446
488
  case 'select-array':
447
489
  case 'multi-select':
448
490
  case 'array':
@@ -542,7 +584,7 @@ var _validateField = function (type, value, field, canBeNull) {
542
584
  return invalidResult('Mapper code is required');
543
585
  }
544
586
  // Split the value
545
- var _s = value.split('::'), code = _s[0], method = _s[1];
587
+ var _u = value.split('::'), code = _u[0], method = _u[1];
546
588
  // Both fields need to be strings & filled
547
589
  var codeResult = (0, exports.validateFieldWithResult)('string', code);
548
590
  if (!codeResult.isValid) {
@@ -781,10 +823,34 @@ var _validateField = function (type, value, field, canBeNull) {
781
823
  return invalidResult('Value is not valid YAML');
782
824
  }
783
825
  }
784
- if (parsedData) {
785
- return withContext((0, exports.validateFieldWithResult)((0, exports.getTypeFromValue)(parsedData), value), 'Auto-detected type is invalid');
826
+ /* A FALSY value is not an ABSENT one. `null`, `0`, `false` and `""` are
827
+ all values an author may hold in an `auto`/`any` field — a test
828
+ assertion expecting a count of zero, a flag that is off, or a blank
829
+ string — and the truthiness gate that used to stand here refused every
830
+ one of them as *"Value is empty"*. It surfaced on an assertion's
831
+ Expected Value holding `null`: opening it reported *"Value for argument
832
+ 1 ("any") is invalid: Value is empty"* on the value the author had
833
+ deliberately chosen. Only `undefined` is actually empty.
834
+
835
+ `null` and `""` are answered here rather than delegated, for two
836
+ different reasons: `getTypeFromValue(null)` answers `auto`, which would
837
+ re-enter this very branch, and the `string` validator rejects `""`
838
+ because that is the rule for a REQUIRED text field — a different
839
+ question from whether an untyped field may hold a blank string. */
840
+ if (parsedData === undefined) {
841
+ return invalidResult('Value is empty');
842
+ }
843
+ if (parsedData === null || parsedData === '') {
844
+ return validResult();
786
845
  }
787
- return invalidResult('Value is empty');
846
+ /* Validate what was PARSED, against the type detected from the same
847
+ parse. Validating the raw `value` instead made the two disagree
848
+ whenever parsing changed the shape: typing `1` into an `auto` field
849
+ parsed to the number 1, detected `int`, and then validated the STRING
850
+ "1" against it — "Value must be an integer", on a value that is one.
851
+ The author saw their field go invalid on the first character they
852
+ typed. */
853
+ return withContext((0, exports.validateFieldWithResult)((0, exports.getTypeFromValue)(parsedData), parsedData), 'Auto-detected type is invalid');
788
854
  }
789
855
  case 'processor': {
790
856
  if (!value || !value['processor-input-type'] || !value['processor-output-type']) {
@@ -948,9 +1014,25 @@ var _validateField = function (type, value, field, canBeNull) {
948
1014
  !isValueDefined(optionType, optionValue)) {
949
1015
  continue;
950
1016
  }
1017
+ /* An option whose dependencies are not fulfilled is not part of this
1018
+ object, so it cannot make the object invalid.
1019
+
1020
+ The form already takes that view — it HIDES such an option — and
1021
+ the two disagreeing is a trap with no way out of it: a test whose
1022
+ subject moved from a versioned kind to a service keeps the
1023
+ `subject_iface_version` it no longer has a field for, and Submit
1024
+ goes dead naming an option that is nowhere on screen. Nulling the
1025
+ value does not help either, because a null is still a value the
1026
+ loop reaches.
1027
+
1028
+ A REQUIRED option with unfulfilled dependencies is unaffected:
1029
+ `getUnresolvedRequiredOptions` above reports it as `dependency`
1030
+ before this loop runs, and it is the only owner of that question.
1031
+ This branch was therefore only ever able to fail an option the
1032
+ author could not see and did not need. */
951
1033
  if (((_d = optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema[option]) === null || _d === void 0 ? void 0 : _d.depends_on) &&
952
1034
  !(0, exports.hasAllDependenciesFullfilled)(optionSchema[option].depends_on, options, optionSchema)) {
953
- return invalidResult("Option ".concat(option, " dependencies are not fulfilled"));
1035
+ continue;
954
1036
  }
955
1037
  var optionResult = typeof optionData !== 'object'
956
1038
  ? (0, exports.validateFieldWithResult)((0, exports.getTypeFromValue)(optionData), optionData)
@@ -1010,7 +1092,7 @@ var _validateField = function (type, value, field, canBeNull) {
1010
1092
  case 'byte-size': {
1011
1093
  if (typeof value !== 'string')
1012
1094
  return invalidResult('Byte size must be a string');
1013
- var _t = (0, common_1.splitByteSize)(value), bytes = _t[0], sizeUnit = _t[1];
1095
+ var _v = (0, common_1.splitByteSize)(value), bytes = _v[0], sizeUnit = _v[1];
1014
1096
  var bytesResult = (0, exports.validateFieldWithResult)('number', bytes);
1015
1097
  if (!bytesResult.isValid) {
1016
1098
  return withContext(bytesResult, 'Byte size numeric part is invalid');
@@ -1105,6 +1187,29 @@ var _validateField = function (type, value, field, canBeNull) {
1105
1187
  var argDefinition = expressionDefinition.varargs
1106
1188
  ? expressionDefinition.args[0]
1107
1189
  : expressionDefinition.args[index];
1190
+ /* The argument's name for the message.
1191
+
1192
+ `display_name` is what a catalogue MAY carry; the served one carries
1193
+ `name`, so every message about an argument read "argument 1
1194
+ ("undefined") is invalid" and named a field that does not exist. */
1195
+ var argLabel = (_s = (_r = argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.display_name) !== null && _r !== void 0 ? _r : argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.name) !== null && _s !== void 0 ? _s : "argument ".concat(index + 1);
1196
+ /* An explicit null is a VALUE, and DPQL says so: `null` is a literal
1197
+ that parses, serializes and round-trips like any other.
1198
+
1199
+ Treated as a missing one, it made "this returns no value"
1200
+ unsayable. Typing `null` into the text editor produces the literal
1201
+ expression `{exp: "value", args: [null]}`; the visual view then
1202
+ called it invalid and refused to render a summary, and a raw null
1203
+ argument crashed the validator outright on `argValue.type`. Reported
1204
+ from the live IDE by an author with no other way to assert that a
1205
+ service method returns nothing.
1206
+
1207
+ Only an EXPLICIT null counts. An argument that is simply absent, or
1208
+ an envelope holding `undefined`, is still missing — which is the
1209
+ distinction the author is making when they write it. */
1210
+ if (argValue === null || ((0, isPlainObject_1.default)(argValue) && argValue.value === null)) {
1211
+ continue;
1212
+ }
1108
1213
  if (!(argValue === null || argValue === void 0 ? void 0 : argValue.value) && !(argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.required)) {
1109
1214
  continue;
1110
1215
  }
@@ -1114,20 +1219,27 @@ var _validateField = function (type, value, field, canBeNull) {
1114
1219
  has_to_have_value: argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.required,
1115
1220
  });
1116
1221
  if (!result_1.isValid) {
1117
- return withContext(result_1, "Sub-expression for argument ".concat(index + 1, " (\"").concat(argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.display_name, "\") is invalid"));
1222
+ return withContext(result_1, "Sub-expression for argument ".concat(index + 1, " (\"").concat(argLabel, "\") is invalid"));
1118
1223
  }
1119
1224
  continue;
1120
1225
  }
1121
- // A slot with no operand at all is a missing value, not a crash:
1122
- // judge it as an empty value of the type the catalogue expects.
1123
- var result = (0, exports.validateFieldWithResult)((_r = argValue === null || argValue === void 0 ? void 0 : argValue.type) !== null && _r !== void 0 ? _r : argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.ui_type, argValue === null || argValue === void 0 ? void 0 : argValue.value, {
1226
+ /* A slot with no operand at all is judged as what it is — a missing
1227
+ value — rather than read for a `type` it does not have.
1228
+
1229
+ An operand that HOLDS something is judged by the envelope's own type,
1230
+ or — when the envelope carries none (a raw parse operand widened
1231
+ without a `ui_type`, a slot reset by a type change) — by the type the
1232
+ catalogue declares. Without that fallback `_validateField` refuses it
1233
+ for "Missing type" however right the value is. */
1234
+ var operandType = (_t = argValue === null || argValue === void 0 ? void 0 : argValue.type) !== null && _t !== void 0 ? _t : ((argValue === null || argValue === void 0 ? void 0 : argValue.value) === undefined ? undefined : argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.ui_type);
1235
+ var result = (0, exports.validateFieldWithResult)(operandType, argValue === null || argValue === void 0 ? void 0 : argValue.value, {
1124
1236
  expressions: expressions,
1125
1237
  allowed_values: argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.allowed_values,
1126
1238
  element_allowed_values: argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.element_allowed_values,
1127
1239
  has_to_have_value: argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.required,
1128
1240
  });
1129
1241
  if (!result.isValid) {
1130
- return withContext(result, "Value for argument ".concat(index + 1, " (\"").concat(argDefinition === null || argDefinition === void 0 ? void 0 : argDefinition.display_name, "\") is invalid"));
1242
+ return withContext(result, "Value for argument ".concat(index + 1, " (\"").concat(argLabel, "\") is invalid"));
1131
1243
  }
1132
1244
  }
1133
1245
  return validResult();
@@ -1332,15 +1444,24 @@ exports.getUnresolvedRequiredOptions = getUnresolvedRequiredOptions;
1332
1444
  /**
1333
1445
  * Split a dependency entry into the sibling it names and how its value is compared.
1334
1446
  *
1335
- * Three forms: `name` (the sibling must simply have a value), `name=value` (it must
1336
- * have exactly that value) and `name!=value` (it must have a value, and not that
1337
- * one). The negative form is what lets a field say it applies to every variant of a
1338
- * record but one — spelling that as an `any-of` list of every other variant is both
1339
- * unreadable in the "Depends on" lock and silently wrong the moment a variant is
1340
- * added.
1447
+ * Four forms: `name` (the sibling must simply have a value), `!name` (it must have
1448
+ * none), `name=value` (it must have exactly that value) and `name!=value` (it must
1449
+ * have a value, and not that one). The negative comparison is what lets a field say
1450
+ * it applies to every variant of a record but one — spelling that as an `any-of`
1451
+ * list of every other variant is both unreadable in the "Depends on" lock and
1452
+ * silently wrong the moment a variant is added.
1341
1453
  *
1342
1454
  * `!=` deliberately requires the sibling to be answered: "not X" is a statement about
1343
1455
  * an answer, so an unanswered sibling does not satisfy it and the field stays locked.
1456
+ *
1457
+ * `!name` is the form that statement cannot make. Two options that exclude one
1458
+ * another (a converter that reads NodeSet2 and one that writes OpenAPI 3) each
1459
+ * apply only while the OTHER has not been answered at all, and `name!=value` cannot
1460
+ * say that: it requires an answer. Being a predicate like any other, it composes
1461
+ * with the AND of the top-level entries and the OR of a nested list for free.
1462
+ *
1463
+ * `!` binds to the whole entry, so `!name` never carries a value; `!=` is checked
1464
+ * first, which is what keeps `name!=value` from being read as a leading `!`.
1344
1465
  */
1345
1466
  var parseDependency = function (dependency) {
1346
1467
  var neqIdx = dependency.indexOf('!=');
@@ -1359,13 +1480,29 @@ var parseDependency = function (dependency) {
1359
1480
  value: dependency.substring(eqIdx + 1),
1360
1481
  };
1361
1482
  }
1483
+ if (dependency.startsWith('!')) {
1484
+ return { name: dependency.substring(1), op: '!' };
1485
+ }
1362
1486
  return { name: dependency };
1363
1487
  };
1364
1488
  exports.parseDependency = parseDependency;
1489
+ /** Whether the named sibling currently holds a value this form accepts. */
1490
+ var siblingHasValue = function (name, options, optionsSchema) {
1491
+ var _a, _b;
1492
+ return (0, exports.validateField)((_a = options === null || options === void 0 ? void 0 : options[name]) === null || _a === void 0 ? void 0 : _a.type, (_b = options === null || options === void 0 ? void 0 : options[name]) === null || _b === void 0 ? void 0 : _b.value, __assign(__assign({}, optionsSchema === null || optionsSchema === void 0 ? void 0 : optionsSchema[name]), { options: options, optionSchema: optionsSchema }));
1493
+ };
1365
1494
  /** Whether one dependency entry holds against the current form values. */
1366
1495
  var isDependencyFulfilled = function (dependency, options, optionsSchema) {
1367
1496
  var _a;
1368
1497
  var _b = (0, exports.parseDependency)(dependency), name = _b.name, op = _b.op, value = _b.value;
1498
+ if (op === '!') {
1499
+ // "Has no value" is true of a field the form has not materialized at all —
1500
+ // there is nothing there to be the value. So an absent sibling satisfies
1501
+ // this, exactly as it satisfies the bare form below: neither has an answer
1502
+ // to judge, and a mutual exclusion that locked both halves until one of
1503
+ // them was added would offer the author no way in.
1504
+ return !(options === null || options === void 0 ? void 0 : options[name]) || !siblingHasValue(name, options, optionsSchema);
1505
+ }
1369
1506
  if (op) {
1370
1507
  var optValue = (_a = options === null || options === void 0 ? void 0 : options[name]) === null || _a === void 0 ? void 0 : _a.value;
1371
1508
  if (optValue == null) {
@@ -1373,11 +1510,11 @@ var isDependencyFulfilled = function (dependency, options, optionsSchema) {
1373
1510
  }
1374
1511
  return op === '=' ? String(optValue) === value : String(optValue) !== value;
1375
1512
  }
1376
- return (options === null || options === void 0 ? void 0 : options[name])
1377
- ? (0, exports.validateField)(options[name].type, options[name].value, __assign(__assign({}, optionsSchema === null || optionsSchema === void 0 ? void 0 : optionsSchema[name]), { options: options, optionSchema: optionsSchema }))
1378
- : true;
1513
+ return (options === null || options === void 0 ? void 0 : options[name]) ? siblingHasValue(name, options, optionsSchema) : true;
1379
1514
  };
1380
- var hasAllDependenciesFullfilled = function (dependencies, options, optionsSchema) {
1515
+ var hasAllDependenciesFullfilled = function (
1516
+ /** Every entry must hold; a nested list is an ANY of its entries. Mixed freely. */
1517
+ dependencies, options, optionsSchema) {
1381
1518
  if ((0, size_1.default)(dependencies) === 0) {
1382
1519
  return true;
1383
1520
  }