@flanksource/clicky-ui 0.3.34 → 0.3.35

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 (680) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +3 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.d.ts +1 -1
  7. package/dist/comments/CommentProvider.d.ts +1 -1
  8. package/dist/comments/CommentThread.d.ts +1 -1
  9. package/dist/comments/CommentThreadList.d.ts +1 -1
  10. package/dist/comments/MentionTextarea.d.ts +1 -1
  11. package/dist/comments/comment-context.d.ts +4 -4
  12. package/dist/comments/comment-fixtures.d.ts +1 -1
  13. package/dist/comments/comment-types.d.ts +1 -1
  14. package/dist/components/AccordionList.d.ts +1 -1
  15. package/dist/components/ComboboxControl.d.ts +1 -1
  16. package/dist/components/ComboboxMenu.d.ts +2 -2
  17. package/dist/components/ComboboxTags.cjs +41 -11
  18. package/dist/components/ComboboxTags.cjs.map +1 -1
  19. package/dist/components/ComboboxTags.d.ts +6 -0
  20. package/dist/components/ComboboxTags.d.ts.map +1 -1
  21. package/dist/components/ComboboxTags.js +41 -11
  22. package/dist/components/ComboboxTags.js.map +1 -1
  23. package/dist/components/DateField.d.ts +3 -3
  24. package/dist/components/DatePicker.d.ts +3 -3
  25. package/dist/components/DateTimePicker.d.ts +3 -3
  26. package/dist/components/ErrorWrapper.d.ts +2 -2
  27. package/dist/components/Field.d.ts +1 -1
  28. package/dist/components/FilterBar.d.ts +1 -1
  29. package/dist/components/FormLookupProvider.d.ts +1 -1
  30. package/dist/components/FormatOptionsDropdown.d.ts +1 -1
  31. package/dist/components/IconButton.d.ts +3 -3
  32. package/dist/components/InputField.d.ts +2 -2
  33. package/dist/components/ItemActions.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.cjs +17 -36
  35. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  36. package/dist/components/JsonSchemaForm.d.ts +1 -1
  37. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  38. package/dist/components/JsonSchemaForm.js +17 -36
  39. package/dist/components/JsonSchemaForm.js.map +1 -1
  40. package/dist/components/ListMenu.d.ts +1 -1
  41. package/dist/components/MultiSelect.d.ts +1 -1
  42. package/dist/components/SearchInput.d.ts +1 -1
  43. package/dist/components/SegmentedControl.d.ts +1 -1
  44. package/dist/components/SplitButton.d.ts +1 -1
  45. package/dist/components/Switch.d.ts +1 -1
  46. package/dist/components/TreePickerField.cjs +11 -2
  47. package/dist/components/TreePickerField.cjs.map +1 -1
  48. package/dist/components/TreePickerField.d.ts +13 -4
  49. package/dist/components/TreePickerField.d.ts.map +1 -1
  50. package/dist/components/TreePickerField.js +11 -2
  51. package/dist/components/TreePickerField.js.map +1 -1
  52. package/dist/components/UnitStepControls.d.ts +1 -1
  53. package/dist/components/button.d.ts +3 -3
  54. package/dist/components/combobox-types.d.ts +1 -1
  55. package/dist/components/density-switcher.d.ts +1 -1
  56. package/dist/components/filter-bar-context.d.ts +1 -1
  57. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  58. package/dist/components/form-lookup-context.d.ts +1 -1
  59. package/dist/components/icon-menu-picker.d.ts +1 -1
  60. package/dist/components/json-schema-form-accordion-array.cjs +44 -21
  61. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  63. package/dist/components/json-schema-form-accordion-array.js +47 -24
  64. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  65. package/dist/components/json-schema-form-array.cjs +53 -30
  66. package/dist/components/json-schema-form-array.cjs.map +1 -1
  67. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  68. package/dist/components/json-schema-form-array.js +54 -31
  69. package/dist/components/json-schema-form-array.js.map +1 -1
  70. package/dist/components/json-schema-form-cards-array.cjs +32 -22
  71. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-cards-array.js +33 -23
  74. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  75. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
  76. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
  77. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  78. package/dist/components/json-schema-form-errors.cjs +5 -1
  79. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  80. package/dist/components/json-schema-form-errors.d.ts +2 -1
  81. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  82. package/dist/components/json-schema-form-errors.js +6 -2
  83. package/dist/components/json-schema-form-errors.js.map +1 -1
  84. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  85. package/dist/components/json-schema-form-filter-input.cjs +50 -0
  86. package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
  87. package/dist/components/json-schema-form-filter-input.d.ts +5 -0
  88. package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
  89. package/dist/components/json-schema-form-filter-input.js +50 -0
  90. package/dist/components/json-schema-form-filter-input.js.map +1 -0
  91. package/dist/components/json-schema-form-filter.cjs +49 -0
  92. package/dist/components/json-schema-form-filter.cjs.map +1 -0
  93. package/dist/components/json-schema-form-filter.d.ts +8 -0
  94. package/dist/components/json-schema-form-filter.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-filter.js +49 -0
  96. package/dist/components/json-schema-form-filter.js.map +1 -0
  97. package/dist/components/json-schema-form-layout.cjs +84 -17
  98. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  99. package/dist/components/json-schema-form-layout.d.ts +1 -1
  100. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-layout.js +84 -17
  102. package/dist/components/json-schema-form-layout.js.map +1 -1
  103. package/dist/components/json-schema-form-list-array.cjs +16 -5
  104. package/dist/components/json-schema-form-list-array.cjs.map +1 -1
  105. package/dist/components/json-schema-form-list-array.d.ts +2 -1
  106. package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-list-array.js +16 -5
  108. package/dist/components/json-schema-form-list-array.js.map +1 -1
  109. package/dist/components/json-schema-form-object.cjs +239 -85
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts +2 -2
  112. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  113. package/dist/components/json-schema-form-object.js +241 -87
  114. package/dist/components/json-schema-form-object.js.map +1 -1
  115. package/dist/components/json-schema-form-preferences.cjs +1 -1
  116. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  117. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  118. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  119. package/dist/components/json-schema-form-preferences.js +1 -1
  120. package/dist/components/json-schema-form-preferences.js.map +1 -1
  121. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
  122. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
  123. package/dist/components/json-schema-form-properties-size.cjs +19 -0
  124. package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
  125. package/dist/components/json-schema-form-properties-size.d.ts +4 -0
  126. package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-properties-size.js +19 -0
  128. package/dist/components/json-schema-form-properties-size.js.map +1 -0
  129. package/dist/components/json-schema-form-properties.cjs +305 -0
  130. package/dist/components/json-schema-form-properties.cjs.map +1 -0
  131. package/dist/components/json-schema-form-properties.d.ts +20 -0
  132. package/dist/components/json-schema-form-properties.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
  134. package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
  135. package/dist/components/json-schema-form-properties.js +305 -0
  136. package/dist/components/json-schema-form-properties.js.map +1 -0
  137. package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
  138. package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
  139. package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
  140. package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
  141. package/dist/components/json-schema-form-property-actions-context.js +6 -0
  142. package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
  143. package/dist/components/json-schema-form-property-collection.cjs +31 -0
  144. package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
  145. package/dist/components/json-schema-form-property-collection.d.ts +6 -0
  146. package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
  147. package/dist/components/json-schema-form-property-collection.js +31 -0
  148. package/dist/components/json-schema-form-property-collection.js.map +1 -0
  149. package/dist/components/json-schema-form-property-draft.cjs +45 -0
  150. package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
  151. package/dist/components/json-schema-form-property-draft.d.ts +8 -0
  152. package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-property-draft.js +45 -0
  154. package/dist/components/json-schema-form-property-draft.js.map +1 -0
  155. package/dist/components/json-schema-form-property-preview.cjs +68 -0
  156. package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
  157. package/dist/components/json-schema-form-property-preview.d.ts +7 -0
  158. package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-property-preview.js +68 -0
  160. package/dist/components/json-schema-form-property-preview.js.map +1 -0
  161. package/dist/components/json-schema-form-property-selection.cjs +89 -0
  162. package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
  163. package/dist/components/json-schema-form-property-selection.d.ts +6 -0
  164. package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-property-selection.js +89 -0
  166. package/dist/components/json-schema-form-property-selection.js.map +1 -0
  167. package/dist/components/json-schema-form-render.cjs +41 -4
  168. package/dist/components/json-schema-form-render.cjs.map +1 -1
  169. package/dist/components/json-schema-form-render.d.ts +1 -1
  170. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  171. package/dist/components/json-schema-form-render.js +42 -5
  172. package/dist/components/json-schema-form-render.js.map +1 -1
  173. package/dist/components/json-schema-form-resolve.cjs +2 -0
  174. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  175. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  176. package/dist/components/json-schema-form-resolve.js +2 -0
  177. package/dist/components/json-schema-form-resolve.js.map +1 -1
  178. package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
  179. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
  180. package/dist/components/json-schema-form-table-array.cjs +82 -51
  181. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  182. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  183. package/dist/components/json-schema-form-table-array.js +84 -53
  184. package/dist/components/json-schema-form-table-array.js.map +1 -1
  185. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  186. package/dist/components/json-schema-form-template.d.ts +1 -1
  187. package/dist/components/json-schema-form-types.d.ts +7 -179
  188. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-utils.cjs +10 -9
  190. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  191. package/dist/components/json-schema-form-utils.d.ts +11 -1
  192. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-utils.js +10 -9
  194. package/dist/components/json-schema-form-utils.js.map +1 -1
  195. package/dist/components/loading.d.ts +4 -4
  196. package/dist/components/mdx-editor-callout.d.ts +1 -1
  197. package/dist/components/mdx-editor-options.d.ts +1 -1
  198. package/dist/components/select.d.ts +3 -3
  199. package/dist/components/theme-switcher.d.ts +1 -1
  200. package/dist/components/use-list-menu-selection.d.ts +1 -1
  201. package/dist/components/useComboboxLayout.d.ts +1 -1
  202. package/dist/components/workload-picker-utils.d.ts +1 -1
  203. package/dist/data/Avatar.d.ts +1 -1
  204. package/dist/data/AvatarBadge.d.ts +1 -1
  205. package/dist/data/Badge.d.ts +1 -1
  206. package/dist/data/Callout.d.ts +1 -1
  207. package/dist/data/DataTable.cjs +575 -435
  208. package/dist/data/DataTable.cjs.map +1 -1
  209. package/dist/data/DataTable.d.ts +21 -13
  210. package/dist/data/DataTable.d.ts.map +1 -1
  211. package/dist/data/DataTable.grouping.d.ts +1 -1
  212. package/dist/data/DataTable.js +575 -435
  213. package/dist/data/DataTable.js.map +1 -1
  214. package/dist/data/ExecutionTree.d.ts +1 -1
  215. package/dist/data/FilterPill.d.ts +1 -1
  216. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
  217. package/dist/data/FixtureEditor/types.d.ts +1 -1
  218. package/dist/data/Gauge.d.ts +1 -1
  219. package/dist/data/GaugeHoverCard.d.ts +1 -1
  220. package/dist/data/Icon.d.ts +1 -1
  221. package/dist/data/KeyValueList.d.ts +1 -1
  222. package/dist/data/MarkdownEditor.d.ts +1 -1
  223. package/dist/data/MatrixTable.d.ts +1 -1
  224. package/dist/data/ObjectGraph.d.ts +1 -1
  225. package/dist/data/ProgressBars.d.ts +1 -1
  226. package/dist/data/Properties.cjs +86 -35
  227. package/dist/data/Properties.cjs.map +1 -1
  228. package/dist/data/Properties.d.ts +2 -2
  229. package/dist/data/Properties.d.ts.map +1 -1
  230. package/dist/data/Properties.js +87 -36
  231. package/dist/data/Properties.js.map +1 -1
  232. package/dist/data/RadialGauge.d.ts +1 -1
  233. package/dist/data/SchemaViewer.d.ts +1 -1
  234. package/dist/data/SortableHeader.d.ts +1 -1
  235. package/dist/data/StatStrip.d.ts +1 -1
  236. package/dist/data/StatusBreakdown.d.ts +1 -1
  237. package/dist/data/TabButton.d.ts +1 -1
  238. package/dist/data/TaskManager.cjs +9 -17
  239. package/dist/data/TaskManager.cjs.map +1 -1
  240. package/dist/data/TaskManager.d.ts.map +1 -1
  241. package/dist/data/TaskManager.js +9 -17
  242. package/dist/data/TaskManager.js.map +1 -1
  243. package/dist/data/TaskManagerButton.cjs +17 -34
  244. package/dist/data/TaskManagerButton.cjs.map +1 -1
  245. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  246. package/dist/data/TaskManagerButton.js +18 -35
  247. package/dist/data/TaskManagerButton.js.map +1 -1
  248. package/dist/data/TaskProcessDetails.cjs +5 -26
  249. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  250. package/dist/data/TaskProcessDetails.d.ts +2 -1
  251. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  252. package/dist/data/TaskProcessDetails.js +5 -26
  253. package/dist/data/TaskProcessDetails.js.map +1 -1
  254. package/dist/data/TaskProgress.cjs +24 -15
  255. package/dist/data/TaskProgress.cjs.map +1 -1
  256. package/dist/data/TaskProgress.d.ts +2 -1
  257. package/dist/data/TaskProgress.d.ts.map +1 -1
  258. package/dist/data/TaskProgress.js +24 -15
  259. package/dist/data/TaskProgress.js.map +1 -1
  260. package/dist/data/TaskResourceReadings.cjs +42 -0
  261. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  262. package/dist/data/TaskResourceReadings.d.ts +6 -0
  263. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  264. package/dist/data/TaskResourceReadings.js +42 -0
  265. package/dist/data/TaskResourceReadings.js.map +1 -0
  266. package/dist/data/TaskSnapshot.cjs.map +1 -1
  267. package/dist/data/TaskSnapshot.d.ts +14 -1
  268. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  269. package/dist/data/TaskSnapshot.js.map +1 -1
  270. package/dist/data/Timeline.d.ts +1 -1
  271. package/dist/data/Tree.d.ts +1 -1
  272. package/dist/data/TreeGroupHeader.d.ts +1 -1
  273. package/dist/data/TreeNode.d.ts +1 -1
  274. package/dist/data/Version.d.ts +3 -3
  275. package/dist/data/ai/ChatWindow.cjs +22 -12
  276. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  277. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  278. package/dist/data/ai/ChatWindow.js +22 -12
  279. package/dist/data/ai/ChatWindow.js.map +1 -1
  280. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  281. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  282. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  283. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  284. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  285. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  286. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  287. package/dist/data/ai/ChatWindowManager.js +2 -0
  288. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  289. package/dist/data/ai/PolicyTree.d.ts +1 -1
  290. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  291. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  292. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  293. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  294. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  295. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  296. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  297. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  298. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  299. package/dist/data/ai/SessionInspector.approvals.cjs +147 -0
  300. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  301. package/dist/data/ai/SessionInspector.approvals.d.ts +21 -0
  302. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  303. package/dist/data/ai/SessionInspector.approvals.js +147 -0
  304. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  305. package/dist/data/ai/SessionInspector.cjs +21 -8
  306. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  307. package/dist/data/ai/SessionInspector.d.ts +6 -2
  308. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  309. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  310. package/dist/data/ai/SessionInspector.js +21 -8
  311. package/dist/data/ai/SessionInspector.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.panel-parts.cjs +47 -0
  313. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  314. package/dist/data/ai/SessionInspector.panel-parts.d.ts +20 -0
  315. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  316. package/dist/data/ai/SessionInspector.panel-parts.js +47 -0
  317. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  318. package/dist/data/ai/SessionInspector.panels.cjs +40 -99
  319. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  320. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  321. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  322. package/dist/data/ai/SessionInspector.panels.js +12 -71
  323. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  324. package/dist/data/ai/SessionViewer.d.ts +1 -1
  325. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  326. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  327. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  328. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  329. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  330. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  331. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  332. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  333. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  334. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  335. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  336. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  337. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  338. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  339. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  340. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  341. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  342. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  343. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  344. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  345. package/dist/data/ai/chat-window-context.cjs +1 -0
  346. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  347. package/dist/data/ai/chat-window-context.d.ts +13 -5
  348. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  349. package/dist/data/ai/chat-window-context.js +1 -0
  350. package/dist/data/ai/chat-window-context.js.map +1 -1
  351. package/dist/data/ai/index.d.ts +2 -1
  352. package/dist/data/ai/index.d.ts.map +1 -1
  353. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  354. package/dist/data/cache-browser/adapter.d.ts +1 -1
  355. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  356. package/dist/data/cells/EntityCell.d.ts +1 -1
  357. package/dist/data/cells/tag-utils.d.ts +1 -1
  358. package/dist/data/chat/Chat.cjs +42 -46
  359. package/dist/data/chat/Chat.cjs.map +1 -1
  360. package/dist/data/chat/Chat.d.ts +16 -5
  361. package/dist/data/chat/Chat.d.ts.map +1 -1
  362. package/dist/data/chat/Chat.js +43 -47
  363. package/dist/data/chat/Chat.js.map +1 -1
  364. package/dist/data/chat/ModelSelector.d.ts +1 -1
  365. package/dist/data/chat/PromptInput.cjs +13 -0
  366. package/dist/data/chat/PromptInput.cjs.map +1 -1
  367. package/dist/data/chat/PromptInput.d.ts +8 -2
  368. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  369. package/dist/data/chat/PromptInput.js +14 -1
  370. package/dist/data/chat/PromptInput.js.map +1 -1
  371. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  372. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  373. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  374. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  375. package/dist/data/chat/tool-render/context.d.ts +1 -1
  376. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  377. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  378. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  379. package/dist/data/chat/types.d.ts +1 -1
  380. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  381. package/dist/data/data-table-server-filters.d.ts +1 -1
  382. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  383. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  384. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  385. package/dist/data/git/GitChangeList.d.ts +1 -1
  386. package/dist/data/icon-fallback.d.ts +1 -1
  387. package/dist/data/properties-context.cjs +6 -0
  388. package/dist/data/properties-context.cjs.map +1 -0
  389. package/dist/data/properties-context.d.ts +7 -0
  390. package/dist/data/properties-context.d.ts.map +1 -0
  391. package/dist/data/properties-context.js +6 -0
  392. package/dist/data/properties-context.js.map +1 -0
  393. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  394. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  395. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  396. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  397. package/dist/data/runtime/RuntimeBar.js +7 -3
  398. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  399. package/dist/data/task-copy.cjs +1 -1
  400. package/dist/data/task-copy.cjs.map +1 -1
  401. package/dist/data/task-copy.js +1 -1
  402. package/dist/data/task-copy.js.map +1 -1
  403. package/dist/data/task-resource-summary.cjs +30 -0
  404. package/dist/data/task-resource-summary.cjs.map +1 -0
  405. package/dist/data/task-resource-summary.d.ts +15 -0
  406. package/dist/data/task-resource-summary.d.ts.map +1 -0
  407. package/dist/data/task-resource-summary.js +30 -0
  408. package/dist/data/task-resource-summary.js.map +1 -0
  409. package/dist/data/task-status.cjs +8 -2
  410. package/dist/data/task-status.cjs.map +1 -1
  411. package/dist/data/task-status.d.ts +3 -0
  412. package/dist/data/task-status.d.ts.map +1 -1
  413. package/dist/data/task-status.js +8 -2
  414. package/dist/data/task-status.js.map +1 -1
  415. package/dist/data/task-work-progress.cjs +24 -0
  416. package/dist/data/task-work-progress.cjs.map +1 -0
  417. package/dist/data/task-work-progress.d.ts +21 -0
  418. package/dist/data/task-work-progress.d.ts.map +1 -0
  419. package/dist/data/task-work-progress.js +24 -0
  420. package/dist/data/task-work-progress.js.map +1 -0
  421. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  422. package/dist/data/test-runner/adapter.d.ts +1 -1
  423. package/dist/data/test-runner/context.d.ts +1 -1
  424. package/dist/data/use-data-table-virtual.cjs +73 -0
  425. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  426. package/dist/data/use-data-table-virtual.d.ts +40 -0
  427. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  428. package/dist/data/use-data-table-virtual.js +73 -0
  429. package/dist/data/use-data-table-virtual.js.map +1 -0
  430. package/dist/data/verification/VerificationResults.d.ts +1 -1
  431. package/dist/data/version-info.cjs +3 -3
  432. package/dist/data/version-info.js +3 -3
  433. package/dist/expressions/lang/attributes.cjs +56 -0
  434. package/dist/expressions/lang/attributes.cjs.map +1 -0
  435. package/dist/expressions/lang/attributes.d.ts +22 -0
  436. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  437. package/dist/expressions/lang/attributes.js +56 -0
  438. package/dist/expressions/lang/attributes.js.map +1 -0
  439. package/dist/expressions/lang/completion.cjs +164 -0
  440. package/dist/expressions/lang/completion.cjs.map +1 -0
  441. package/dist/expressions/lang/completion.d.ts +29 -0
  442. package/dist/expressions/lang/completion.d.ts.map +1 -0
  443. package/dist/expressions/lang/completion.js +164 -0
  444. package/dist/expressions/lang/completion.js.map +1 -0
  445. package/dist/expressions/lang/environment.cjs +115 -0
  446. package/dist/expressions/lang/environment.cjs.map +1 -0
  447. package/dist/expressions/lang/environment.d.ts +54 -0
  448. package/dist/expressions/lang/environment.d.ts.map +1 -0
  449. package/dist/expressions/lang/environment.js +115 -0
  450. package/dist/expressions/lang/environment.js.map +1 -0
  451. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  452. package/dist/expressions/lang/generated/index.cjs +18 -0
  453. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  454. package/dist/expressions/lang/generated/index.d.ts +9 -0
  455. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  456. package/dist/expressions/lang/generated/index.js +18 -0
  457. package/dist/expressions/lang/generated/index.js.map +1 -0
  458. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  459. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  460. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  461. package/dist/expressions/lang/generated/languages.json.js +18 -0
  462. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  463. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  464. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  465. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  466. package/dist/expressions/lang/generated/spec.json.js +12 -0
  467. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  468. package/dist/expressions/lang/hover.cjs +106 -0
  469. package/dist/expressions/lang/hover.cjs.map +1 -0
  470. package/dist/expressions/lang/hover.d.ts +54 -0
  471. package/dist/expressions/lang/hover.d.ts.map +1 -0
  472. package/dist/expressions/lang/hover.js +106 -0
  473. package/dist/expressions/lang/hover.js.map +1 -0
  474. package/dist/expressions/lang/index.cjs +87 -0
  475. package/dist/expressions/lang/index.cjs.map +1 -0
  476. package/dist/expressions/lang/index.d.ts +65 -0
  477. package/dist/expressions/lang/index.d.ts.map +1 -0
  478. package/dist/expressions/lang/index.js +90 -0
  479. package/dist/expressions/lang/index.js.map +1 -0
  480. package/dist/expressions/lang/merge.cjs +52 -0
  481. package/dist/expressions/lang/merge.cjs.map +1 -0
  482. package/dist/expressions/lang/merge.d.ts +12 -0
  483. package/dist/expressions/lang/merge.d.ts.map +1 -0
  484. package/dist/expressions/lang/merge.js +52 -0
  485. package/dist/expressions/lang/merge.js.map +1 -0
  486. package/dist/expressions/lang/prefix.cjs +91 -0
  487. package/dist/expressions/lang/prefix.cjs.map +1 -0
  488. package/dist/expressions/lang/prefix.d.ts +36 -0
  489. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  490. package/dist/expressions/lang/prefix.js +91 -0
  491. package/dist/expressions/lang/prefix.js.map +1 -0
  492. package/dist/expressions/lang/spec.d.ts +13 -0
  493. package/dist/expressions/lang/spec.d.ts.map +1 -0
  494. package/dist/expressions/lang/theme.cjs +97 -0
  495. package/dist/expressions/lang/theme.cjs.map +1 -0
  496. package/dist/expressions/lang/theme.d.ts +6 -0
  497. package/dist/expressions/lang/theme.d.ts.map +1 -0
  498. package/dist/expressions/lang/theme.js +97 -0
  499. package/dist/expressions/lang/theme.js.map +1 -0
  500. package/dist/expressions/lang/types.d.ts +81 -0
  501. package/dist/expressions/lang/types.d.ts.map +1 -0
  502. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  503. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  504. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  505. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  506. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  507. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  508. package/dist/expressions/playground/RunControls.cjs +51 -0
  509. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  510. package/dist/expressions/playground/RunControls.d.ts +7 -0
  511. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  512. package/dist/expressions/playground/RunControls.js +51 -0
  513. package/dist/expressions/playground/RunControls.js.map +1 -0
  514. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  515. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  516. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  517. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  518. package/dist/expressions/playground/VerticalSplit.js +109 -0
  519. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  520. package/dist/expressions/playground/api.cjs +49 -0
  521. package/dist/expressions/playground/api.cjs.map +1 -0
  522. package/dist/expressions/playground/api.d.ts +53 -0
  523. package/dist/expressions/playground/api.d.ts.map +1 -0
  524. package/dist/expressions/playground/api.js +49 -0
  525. package/dist/expressions/playground/api.js.map +1 -0
  526. package/dist/expressions/playground/languages.cjs +88 -0
  527. package/dist/expressions/playground/languages.cjs.map +1 -0
  528. package/dist/expressions/playground/languages.d.ts +43 -0
  529. package/dist/expressions/playground/languages.d.ts.map +1 -0
  530. package/dist/expressions/playground/languages.js +88 -0
  531. package/dist/expressions/playground/languages.js.map +1 -0
  532. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  533. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  534. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  535. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  536. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  537. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  538. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  539. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  540. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  541. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  542. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  543. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  544. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  545. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  546. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  547. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  548. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  549. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  550. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  551. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  552. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  553. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  554. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  555. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  556. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  557. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  558. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  559. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  560. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  561. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  562. package/dist/expressions/playground/runAction.cjs +12 -0
  563. package/dist/expressions/playground/runAction.cjs.map +1 -0
  564. package/dist/expressions/playground/runAction.d.ts +15 -0
  565. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  566. package/dist/expressions/playground/runAction.js +12 -0
  567. package/dist/expressions/playground/runAction.js.map +1 -0
  568. package/dist/expressions/playground/runShortcut.cjs +9 -0
  569. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  570. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  571. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  572. package/dist/expressions/playground/runShortcut.js +9 -0
  573. package/dist/expressions/playground/runShortcut.js.map +1 -0
  574. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  575. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  576. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  577. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  578. package/dist/expressions/playground/useEditorTheme.js +23 -0
  579. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  580. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  581. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  582. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  583. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  584. package/dist/expressions/playground/useEvaluator.js +72 -0
  585. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  586. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  587. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  588. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  589. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  590. package/dist/expressions/playground/useParsedInput.js +22 -0
  591. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  592. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  593. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  594. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  595. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  596. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  597. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  598. package/dist/expressions/playground.cjs +18 -0
  599. package/dist/expressions/playground.cjs.map +1 -0
  600. package/dist/expressions/playground.d.ts +18 -0
  601. package/dist/expressions/playground.d.ts.map +1 -0
  602. package/dist/expressions/playground.js +18 -0
  603. package/dist/expressions/playground.js.map +1 -0
  604. package/dist/expressions.cjs +28 -0
  605. package/dist/expressions.cjs.map +1 -0
  606. package/dist/expressions.d.ts +10 -0
  607. package/dist/expressions.d.ts.map +1 -0
  608. package/dist/expressions.js +28 -0
  609. package/dist/expressions.js.map +1 -0
  610. package/dist/hooks/density-provider.d.ts +1 -1
  611. package/dist/hooks/theme-provider.d.ts +1 -1
  612. package/dist/hooks/use-density.d.ts +1 -1
  613. package/dist/hooks/use-resource-clock.cjs +14 -0
  614. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  615. package/dist/hooks/use-resource-clock.d.ts +2 -0
  616. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  617. package/dist/hooks/use-resource-clock.js +14 -0
  618. package/dist/hooks/use-resource-clock.js.map +1 -0
  619. package/dist/hooks/use-task-run.cjs +12 -3
  620. package/dist/hooks/use-task-run.cjs.map +1 -1
  621. package/dist/hooks/use-task-run.d.ts.map +1 -1
  622. package/dist/hooks/use-task-run.js +12 -3
  623. package/dist/hooks/use-task-run.js.map +1 -1
  624. package/dist/hooks/use-theme.d.ts +1 -1
  625. package/dist/icons/registry.d.ts +1 -1
  626. package/dist/icons/types.d.ts +1 -1
  627. package/dist/layout/AppShell.d.ts +1 -1
  628. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  629. package/dist/layout/AppSidebar.d.ts +1 -1
  630. package/dist/layout/Panel.d.ts +1 -1
  631. package/dist/layout/PanelFrame.d.ts +1 -1
  632. package/dist/layout/Section.d.ts +1 -1
  633. package/dist/layout/SplitPane.d.ts +1 -1
  634. package/dist/layout/Tabs.d.ts +1 -1
  635. package/dist/layout/Workspace.d.ts +1 -1
  636. package/dist/layout/Workspace.model.d.ts +1 -1
  637. package/dist/lib/combobox-values.d.ts +1 -1
  638. package/dist/monaco/MonacoEditor.cjs +3 -3
  639. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  640. package/dist/monaco/MonacoEditor.js +2 -2
  641. package/dist/monaco/MonacoEditor.js.map +1 -1
  642. package/dist/monaco/types.d.ts +1 -1
  643. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  644. package/dist/overlay/CellActions.d.ts +1 -1
  645. package/dist/overlay/CommandPalette.d.ts +2 -2
  646. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  647. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  648. package/dist/overlay/DropdownMenu.d.ts +1 -1
  649. package/dist/overlay/HoverCard.d.ts +1 -1
  650. package/dist/overlay/Modal.d.ts +2 -2
  651. package/dist/overlay/Toast.d.ts +1 -1
  652. package/dist/overlay/TourCard.d.ts +1 -1
  653. package/dist/overlay/TourProvider.d.ts +1 -1
  654. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  655. package/dist/overlay/toast-context.d.ts +2 -2
  656. package/dist/overlay/tour-context.d.ts +1 -1
  657. package/dist/overlay/tour-types.d.ts +1 -1
  658. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  659. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  660. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  661. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  662. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  663. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  664. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  665. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  666. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  667. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  668. package/dist/rpc/EndpointList.d.ts +1 -1
  669. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  670. package/dist/rpc/OperationCatalog.d.ts +1 -1
  671. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  672. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  673. package/dist/rpc/OperationResultView.d.ts +1 -1
  674. package/dist/rpc/RouterProvider.d.ts +1 -1
  675. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  676. package/dist/rpc/formMetadata.d.ts +1 -1
  677. package/dist/rpc/router.d.ts +1 -1
  678. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  679. package/dist/styles.css +1 -1
  680. package/package.json +21 -2
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const environment = require("./environment.cjs");
4
+ function celAttributes(spec) {
5
+ const global = [];
6
+ const member = [];
7
+ for (const fn of spec.functions) {
8
+ if (fn.memberOnly) member.push(fn.name);
9
+ else global.push(leafOf(fn.name));
10
+ }
11
+ return {
12
+ // `true`/`false`/`null` are constants, and colouring them as keywords too
13
+ // would let whichever rule ran first decide.
14
+ keywords: spec.keywords.filter((word) => !CONSTANTS.includes(word)),
15
+ constants: [...CONSTANTS],
16
+ typeKeywords: spec.types,
17
+ macros: spec.macros.map((macro) => macro.name),
18
+ namespaces: spec.namespaces,
19
+ globalFunctions: global,
20
+ memberFunctions: member
21
+ };
22
+ }
23
+ function goTemplateAttributes(spec) {
24
+ return {
25
+ keywords: spec.keywords,
26
+ builtins: spec.builtins,
27
+ namespaces: spec.namespaces,
28
+ functions: spec.functions.filter((fn) => !fn.namespace).map((fn) => fn.name)
29
+ };
30
+ }
31
+ function attributesFor(languageId, spec) {
32
+ switch (environment.pathFlavour(languageId)) {
33
+ case "cel":
34
+ return normalize(celAttributes(spec.cel));
35
+ case "gotemplate":
36
+ return normalize(goTemplateAttributes(spec.gotemplate));
37
+ default:
38
+ return null;
39
+ }
40
+ }
41
+ const CONSTANTS = ["true", "false", "null"];
42
+ function normalize(attributes) {
43
+ const out = {};
44
+ for (const [name, words] of Object.entries(attributes)) {
45
+ out[name] = [...new Set(words)].sort();
46
+ }
47
+ return out;
48
+ }
49
+ function leafOf(name) {
50
+ const dot = name.lastIndexOf(".");
51
+ return dot < 0 ? name : name.slice(dot + 1);
52
+ }
53
+ exports.attributesFor = attributesFor;
54
+ exports.celAttributes = celAttributes;
55
+ exports.goTemplateAttributes = goTemplateAttributes;
56
+ //# sourceMappingURL=attributes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.cjs","sources":["../../../src/expressions/lang/attributes.ts"],"sourcesContent":["import type { CelSpec, GoTemplateSpec, GomplateSpec } from \"./types\";\nimport { pathFlavour } from \"./environment\";\n\n/**\n * The Monarch word lists a tokenizer rule refers to as `@name`.\n *\n * The tokenizers themselves are fixed: their rules match any dotted call and\n * then dispatch on these lists (`$1@namespaces`, `$1@globalFunctions`, …). So a\n * host's own `catalog.query` needs no new grammar — only `catalog` in\n * `namespaces` and `query` in `globalFunctions`.\n *\n * This mirrors the derivation in `genmonarch/lang_cel.go` and\n * `lang_gotemplate.go`. `attributes.test.ts` recomputes the generated bundle\n * from the generated spec and asserts the two agree, so the mirror cannot drift\n * silently.\n */\nexport type Attributes = Record<string, string[]>;\n\n/** CEL's word lists, minus `operators`, which comes from the grammar. */\nexport function celAttributes(spec: CelSpec): Attributes {\n const global: string[] = [];\n const member: string[] = [];\n for (const fn of spec.functions) {\n if (fn.memberOnly) member.push(fn.name);\n else global.push(leafOf(fn.name));\n }\n\n return {\n // `true`/`false`/`null` are constants, and colouring them as keywords too\n // would let whichever rule ran first decide.\n keywords: spec.keywords.filter((word) => !CONSTANTS.includes(word)),\n constants: [...CONSTANTS],\n typeKeywords: spec.types,\n macros: spec.macros.map((macro) => macro.name),\n namespaces: spec.namespaces,\n globalFunctions: global,\n memberFunctions: member,\n };\n}\n\n/** The go-template word lists, shared by the bare and embedded languages. */\nexport function goTemplateAttributes(spec: GoTemplateSpec): Attributes {\n return {\n keywords: spec.keywords,\n builtins: spec.builtins,\n namespaces: spec.namespaces,\n functions: spec.functions.filter((fn) => !fn.namespace).map((fn) => fn.name),\n };\n}\n\n/** The word lists for one language id, or null where a spec does not drive it. */\nexport function attributesFor(languageId: string, spec: GomplateSpec): Attributes | null {\n switch (pathFlavour(languageId)) {\n case \"cel\":\n return normalize(celAttributes(spec.cel));\n case \"gotemplate\":\n return normalize(goTemplateAttributes(spec.gotemplate));\n default:\n // JSONPath's vocabulary is the grammar's own, with nothing to extend.\n return null;\n }\n}\n\nconst CONSTANTS = [\"true\", \"false\", \"null\"];\n\n/**\n * Sorted and deduplicated, matching `Language.MarshalJSON` on the Go side, so a\n * recomputed list compares equal to a generated one.\n */\nfunction normalize(attributes: Attributes): Attributes {\n const out: Attributes = {};\n for (const [name, words] of Object.entries(attributes)) {\n out[name] = [...new Set(words)].sort();\n }\n return out;\n}\n\nfunction leafOf(name: string) {\n const dot = name.lastIndexOf(\".\");\n return dot < 0 ? name : name.slice(dot + 1);\n}\n"],"names":["pathFlavour"],"mappings":";;;AAmBO,SAAS,cAAc,MAA2B;AACvD,QAAM,SAAmB,CAAA;AACzB,QAAM,SAAmB,CAAA;AACzB,aAAW,MAAM,KAAK,WAAW;AAC/B,QAAI,GAAG,WAAY,QAAO,KAAK,GAAG,IAAI;AAAA,QACjC,QAAO,KAAK,OAAO,GAAG,IAAI,CAAC;AAAA,EAClC;AAEA,SAAO;AAAA;AAAA;AAAA,IAGL,UAAU,KAAK,SAAS,OAAO,CAAC,SAAS,CAAC,UAAU,SAAS,IAAI,CAAC;AAAA,IAClE,WAAW,CAAC,GAAG,SAAS;AAAA,IACxB,cAAc,KAAK;AAAA,IACnB,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC7C,YAAY,KAAK;AAAA,IACjB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EAAA;AAErB;AAGO,SAAS,qBAAqB,MAAkC;AACrE,SAAO;AAAA,IACL,UAAU,KAAK;AAAA,IACf,UAAU,KAAK;AAAA,IACf,YAAY,KAAK;AAAA,IACjB,WAAW,KAAK,UAAU,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;AAAA,EAAA;AAE/E;AAGO,SAAS,cAAc,YAAoB,MAAuC;AACvF,UAAQA,YAAAA,YAAY,UAAU,GAAA;AAAA,IAC5B,KAAK;AACH,aAAO,UAAU,cAAc,KAAK,GAAG,CAAC;AAAA,IAC1C,KAAK;AACH,aAAO,UAAU,qBAAqB,KAAK,UAAU,CAAC;AAAA,IACxD;AAEE,aAAO;AAAA,EAAA;AAEb;AAEA,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM;AAM1C,SAAS,UAAU,YAAoC;AACrD,QAAM,MAAkB,CAAA;AACxB,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACtD,QAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAA;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,OAAO,MAAc;AAC5B,QAAM,MAAM,KAAK,YAAY,GAAG;AAChC,SAAO,MAAM,IAAI,OAAO,KAAK,MAAM,MAAM,CAAC;AAC5C;;;;"}
@@ -0,0 +1,22 @@
1
+ import { CelSpec, GoTemplateSpec, GomplateSpec } from './types';
2
+ /**
3
+ * The Monarch word lists a tokenizer rule refers to as `@name`.
4
+ *
5
+ * The tokenizers themselves are fixed: their rules match any dotted call and
6
+ * then dispatch on these lists (`$1@namespaces`, `$1@globalFunctions`, …). So a
7
+ * host's own `catalog.query` needs no new grammar — only `catalog` in
8
+ * `namespaces` and `query` in `globalFunctions`.
9
+ *
10
+ * This mirrors the derivation in `genmonarch/lang_cel.go` and
11
+ * `lang_gotemplate.go`. `attributes.test.ts` recomputes the generated bundle
12
+ * from the generated spec and asserts the two agree, so the mirror cannot drift
13
+ * silently.
14
+ */
15
+ export type Attributes = Record<string, string[]>;
16
+ /** CEL's word lists, minus `operators`, which comes from the grammar. */
17
+ export declare function celAttributes(spec: CelSpec): Attributes;
18
+ /** The go-template word lists, shared by the bare and embedded languages. */
19
+ export declare function goTemplateAttributes(spec: GoTemplateSpec): Attributes;
20
+ /** The word lists for one language id, or null where a spec does not drive it. */
21
+ export declare function attributesFor(languageId: string, spec: GomplateSpec): Attributes | null;
22
+ //# sourceMappingURL=attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/expressions/lang/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGrE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAElD,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAmBvD;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAOrE;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI,CAUvF"}
@@ -0,0 +1,56 @@
1
+ import { pathFlavour } from "./environment.js";
2
+ function celAttributes(spec) {
3
+ const global = [];
4
+ const member = [];
5
+ for (const fn of spec.functions) {
6
+ if (fn.memberOnly) member.push(fn.name);
7
+ else global.push(leafOf(fn.name));
8
+ }
9
+ return {
10
+ // `true`/`false`/`null` are constants, and colouring them as keywords too
11
+ // would let whichever rule ran first decide.
12
+ keywords: spec.keywords.filter((word) => !CONSTANTS.includes(word)),
13
+ constants: [...CONSTANTS],
14
+ typeKeywords: spec.types,
15
+ macros: spec.macros.map((macro) => macro.name),
16
+ namespaces: spec.namespaces,
17
+ globalFunctions: global,
18
+ memberFunctions: member
19
+ };
20
+ }
21
+ function goTemplateAttributes(spec) {
22
+ return {
23
+ keywords: spec.keywords,
24
+ builtins: spec.builtins,
25
+ namespaces: spec.namespaces,
26
+ functions: spec.functions.filter((fn) => !fn.namespace).map((fn) => fn.name)
27
+ };
28
+ }
29
+ function attributesFor(languageId, spec) {
30
+ switch (pathFlavour(languageId)) {
31
+ case "cel":
32
+ return normalize(celAttributes(spec.cel));
33
+ case "gotemplate":
34
+ return normalize(goTemplateAttributes(spec.gotemplate));
35
+ default:
36
+ return null;
37
+ }
38
+ }
39
+ const CONSTANTS = ["true", "false", "null"];
40
+ function normalize(attributes) {
41
+ const out = {};
42
+ for (const [name, words] of Object.entries(attributes)) {
43
+ out[name] = [...new Set(words)].sort();
44
+ }
45
+ return out;
46
+ }
47
+ function leafOf(name) {
48
+ const dot = name.lastIndexOf(".");
49
+ return dot < 0 ? name : name.slice(dot + 1);
50
+ }
51
+ export {
52
+ attributesFor,
53
+ celAttributes,
54
+ goTemplateAttributes
55
+ };
56
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","sources":["../../../src/expressions/lang/attributes.ts"],"sourcesContent":["import type { CelSpec, GoTemplateSpec, GomplateSpec } from \"./types\";\nimport { pathFlavour } from \"./environment\";\n\n/**\n * The Monarch word lists a tokenizer rule refers to as `@name`.\n *\n * The tokenizers themselves are fixed: their rules match any dotted call and\n * then dispatch on these lists (`$1@namespaces`, `$1@globalFunctions`, …). So a\n * host's own `catalog.query` needs no new grammar — only `catalog` in\n * `namespaces` and `query` in `globalFunctions`.\n *\n * This mirrors the derivation in `genmonarch/lang_cel.go` and\n * `lang_gotemplate.go`. `attributes.test.ts` recomputes the generated bundle\n * from the generated spec and asserts the two agree, so the mirror cannot drift\n * silently.\n */\nexport type Attributes = Record<string, string[]>;\n\n/** CEL's word lists, minus `operators`, which comes from the grammar. */\nexport function celAttributes(spec: CelSpec): Attributes {\n const global: string[] = [];\n const member: string[] = [];\n for (const fn of spec.functions) {\n if (fn.memberOnly) member.push(fn.name);\n else global.push(leafOf(fn.name));\n }\n\n return {\n // `true`/`false`/`null` are constants, and colouring them as keywords too\n // would let whichever rule ran first decide.\n keywords: spec.keywords.filter((word) => !CONSTANTS.includes(word)),\n constants: [...CONSTANTS],\n typeKeywords: spec.types,\n macros: spec.macros.map((macro) => macro.name),\n namespaces: spec.namespaces,\n globalFunctions: global,\n memberFunctions: member,\n };\n}\n\n/** The go-template word lists, shared by the bare and embedded languages. */\nexport function goTemplateAttributes(spec: GoTemplateSpec): Attributes {\n return {\n keywords: spec.keywords,\n builtins: spec.builtins,\n namespaces: spec.namespaces,\n functions: spec.functions.filter((fn) => !fn.namespace).map((fn) => fn.name),\n };\n}\n\n/** The word lists for one language id, or null where a spec does not drive it. */\nexport function attributesFor(languageId: string, spec: GomplateSpec): Attributes | null {\n switch (pathFlavour(languageId)) {\n case \"cel\":\n return normalize(celAttributes(spec.cel));\n case \"gotemplate\":\n return normalize(goTemplateAttributes(spec.gotemplate));\n default:\n // JSONPath's vocabulary is the grammar's own, with nothing to extend.\n return null;\n }\n}\n\nconst CONSTANTS = [\"true\", \"false\", \"null\"];\n\n/**\n * Sorted and deduplicated, matching `Language.MarshalJSON` on the Go side, so a\n * recomputed list compares equal to a generated one.\n */\nfunction normalize(attributes: Attributes): Attributes {\n const out: Attributes = {};\n for (const [name, words] of Object.entries(attributes)) {\n out[name] = [...new Set(words)].sort();\n }\n return out;\n}\n\nfunction leafOf(name: string) {\n const dot = name.lastIndexOf(\".\");\n return dot < 0 ? name : name.slice(dot + 1);\n}\n"],"names":[],"mappings":";AAmBO,SAAS,cAAc,MAA2B;AACvD,QAAM,SAAmB,CAAA;AACzB,QAAM,SAAmB,CAAA;AACzB,aAAW,MAAM,KAAK,WAAW;AAC/B,QAAI,GAAG,WAAY,QAAO,KAAK,GAAG,IAAI;AAAA,QACjC,QAAO,KAAK,OAAO,GAAG,IAAI,CAAC;AAAA,EAClC;AAEA,SAAO;AAAA;AAAA;AAAA,IAGL,UAAU,KAAK,SAAS,OAAO,CAAC,SAAS,CAAC,UAAU,SAAS,IAAI,CAAC;AAAA,IAClE,WAAW,CAAC,GAAG,SAAS;AAAA,IACxB,cAAc,KAAK;AAAA,IACnB,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC7C,YAAY,KAAK;AAAA,IACjB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EAAA;AAErB;AAGO,SAAS,qBAAqB,MAAkC;AACrE,SAAO;AAAA,IACL,UAAU,KAAK;AAAA,IACf,UAAU,KAAK;AAAA,IACf,YAAY,KAAK;AAAA,IACjB,WAAW,KAAK,UAAU,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;AAAA,EAAA;AAE/E;AAGO,SAAS,cAAc,YAAoB,MAAuC;AACvF,UAAQ,YAAY,UAAU,GAAA;AAAA,IAC5B,KAAK;AACH,aAAO,UAAU,cAAc,KAAK,GAAG,CAAC;AAAA,IAC1C,KAAK;AACH,aAAO,UAAU,qBAAqB,KAAK,UAAU,CAAC;AAAA,IACxD;AAEE,aAAO;AAAA,EAAA;AAEb;AAEA,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM;AAM1C,SAAS,UAAU,YAAoC;AACrD,QAAM,MAAkB,CAAA;AACxB,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACtD,QAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAA;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,OAAO,MAAc;AAC5B,QAAM,MAAM,KAAK,YAAY,GAAG;AAChC,SAAO,MAAM,IAAI,OAAO,KAAK,MAAM,MAAM,CAAC;AAC5C;"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const hover = require("./hover.cjs");
4
+ const environment = require("./environment.cjs");
5
+ const prefix = require("./prefix.cjs");
6
+ function registerCompletion(monaco, languageId, options) {
7
+ return monaco.languages.registerCompletionItemProvider(
8
+ languageId,
9
+ completionProvider(monaco, languageId, options)
10
+ );
11
+ }
12
+ function completionProvider(monaco, languageId, { spec, environment: environment2 }) {
13
+ const items = catalogueItems(monaco, languageId, spec);
14
+ return {
15
+ // A dot must retrigger, or `k8s.` offers nothing until another key is hit.
16
+ triggerCharacters: ["."],
17
+ provideCompletionItems(model, position) {
18
+ const suggestions = environmentItems(
19
+ monaco,
20
+ model,
21
+ position,
22
+ languageId,
23
+ environment2
24
+ );
25
+ const range = wordRange(model, position);
26
+ for (const item of items) suggestions.push({ ...item, range });
27
+ return { suggestions };
28
+ }
29
+ };
30
+ }
31
+ function catalogueItems(monaco, languageId, spec) {
32
+ switch (environment.pathFlavour(languageId)) {
33
+ case "cel":
34
+ return celCompletionItems(monaco, spec);
35
+ case "gotemplate":
36
+ return goTemplateCompletionItems(monaco, spec);
37
+ default:
38
+ return [];
39
+ }
40
+ }
41
+ function environmentItems(monaco, model, position, languageId, environment$1) {
42
+ if (!environment$1) return [];
43
+ const document = environment$1();
44
+ if (document === void 0 || document === null) return [];
45
+ const prefix$1 = prefix.environmentPrefixAt(model, position, languageId);
46
+ if (!prefix$1) return [];
47
+ const parent = environment.resolvePath(document, prefix$1.segments);
48
+ if (parent === void 0) return [];
49
+ const kinds = monaco.languages.CompletionItemKind;
50
+ const range = {
51
+ startLineNumber: position.lineNumber,
52
+ endLineNumber: position.lineNumber,
53
+ startColumn: prefix$1.startColumn,
54
+ endColumn: prefix$1.endColumn
55
+ };
56
+ const typedHead = prefix$1.typed.slice(0, prefix$1.typed.length - prefix$1.leaf.length);
57
+ const items = [];
58
+ for (const entry of environment.childEntries(parent)) {
59
+ const insertText = environment.pathExpression(languageId, [...prefix$1.segments, entry.segment]);
60
+ if (insertText === null) continue;
61
+ items.push({
62
+ label: entry.key,
63
+ kind: entry.container ? kinds.Folder : kinds.Field,
64
+ insertText,
65
+ filterText: `${typedHead}${entry.key}`,
66
+ detail: `${entry.kind} · ${entry.summary}`,
67
+ // A key of the document being evaluated beats any catalogue entry: it is
68
+ // what the author came to the editor to write.
69
+ sortText: `0${entry.key}`,
70
+ range
71
+ });
72
+ }
73
+ return items;
74
+ }
75
+ function celCompletionItems(monaco, spec) {
76
+ const kinds = monaco.languages.CompletionItemKind;
77
+ const items = [];
78
+ for (const fn of spec.cel.functions) {
79
+ items.push(buildFunctionItem(monaco, fn, celInsertText(fn), kinds.Function));
80
+ }
81
+ for (const macro of spec.cel.macros) {
82
+ items.push(buildMacroItem(monaco, macro));
83
+ }
84
+ for (const keyword of spec.cel.keywords) {
85
+ items.push({
86
+ label: keyword,
87
+ kind: kinds.Keyword,
88
+ insertText: keyword,
89
+ detail: "CEL keyword"
90
+ });
91
+ }
92
+ for (const type of spec.cel.types) {
93
+ items.push({ label: type, kind: kinds.TypeParameter, insertText: type, detail: "CEL type" });
94
+ }
95
+ return items;
96
+ }
97
+ function goTemplateCompletionItems(monaco, spec) {
98
+ const kinds = monaco.languages.CompletionItemKind;
99
+ const items = [];
100
+ for (const fn of spec.gotemplate.functions) {
101
+ items.push(buildFunctionItem(monaco, fn, fn.name, kinds.Function));
102
+ }
103
+ for (const builtin of spec.gotemplate.builtins) {
104
+ items.push({
105
+ label: builtin,
106
+ kind: kinds.Function,
107
+ insertText: builtin,
108
+ detail: "text/template builtin"
109
+ });
110
+ }
111
+ for (const keyword of spec.gotemplate.keywords) {
112
+ items.push({
113
+ label: keyword,
114
+ kind: kinds.Keyword,
115
+ insertText: keyword,
116
+ detail: "template keyword"
117
+ });
118
+ }
119
+ return items;
120
+ }
121
+ function buildFunctionItem(monaco, fn, insertText, kind) {
122
+ var _a, _b;
123
+ const detail = fn.signature ?? ((_b = (_a = fn.overloads) == null ? void 0 : _a[0]) == null ? void 0 : _b.result);
124
+ return {
125
+ label: fn.name,
126
+ kind: fn.memberOnly ? monaco.languages.CompletionItemKind.Method : kind,
127
+ insertText,
128
+ ...detail === void 0 ? {} : { detail },
129
+ documentation: { value: hover.functionDocumentation(fn) },
130
+ filterText: fn.name,
131
+ // Un-namespaced names first: they are the short, common ones, and a
132
+ // namespace is easy to reach by typing its prefix.
133
+ sortText: fn.namespace ? `2${fn.name}` : `1${fn.name}`
134
+ };
135
+ }
136
+ function buildMacroItem(monaco, macro) {
137
+ return {
138
+ label: macro.name,
139
+ kind: monaco.languages.CompletionItemKind.Keyword,
140
+ insertText: macro.name,
141
+ detail: `macro (${macro.argCount === 0 ? "variadic" : `${macro.argCount} args`})`,
142
+ documentation: { value: hover.macroDocumentation(macro) },
143
+ filterText: macro.name,
144
+ sortText: `1${macro.name}`
145
+ };
146
+ }
147
+ function celInsertText(fn) {
148
+ var _a, _b, _c, _d;
149
+ const arity = ((_b = (_a = fn.overloads) == null ? void 0 : _a[0]) == null ? void 0 : _b.args.length) ?? 0;
150
+ const receiver = ((_d = (_c = fn.overloads) == null ? void 0 : _c[0]) == null ? void 0 : _d.member) ? 1 : 0;
151
+ return arity - receiver === 0 ? `${fn.name}()` : `${fn.name}(`;
152
+ }
153
+ function wordRange(model, position) {
154
+ const word = model.getWordUntilPosition(position);
155
+ return {
156
+ startLineNumber: position.lineNumber,
157
+ endLineNumber: position.lineNumber,
158
+ startColumn: word.startColumn,
159
+ endColumn: word.endColumn
160
+ };
161
+ }
162
+ exports.completionProvider = completionProvider;
163
+ exports.registerCompletion = registerCompletion;
164
+ //# sourceMappingURL=completion.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.cjs","sources":["../../../src/expressions/lang/completion.ts"],"sourcesContent":["import type * as monaco from \"monaco-editor\";\nimport type { GomplateSpec, Monaco, SpecFunction, SpecMacro } from \"./types\";\nimport { functionDocumentation, macroDocumentation } from \"./hover\";\nimport { childEntries, pathExpression, pathFlavour, resolvePath } from \"./environment\";\nimport { environmentPrefixAt } from \"./prefix\";\n\n/** Supplies the document expressions are evaluated against, on every request. */\nexport type EnvironmentSource = () => unknown;\n\nexport interface CompletionOptions {\n /** The catalogue to complete from — gomplate's, or a host's merged over it. */\n spec: GomplateSpec;\n environment?: EnvironmentSource | undefined;\n}\n\n/**\n * Registers completion for one language.\n *\n * The catalogue half is built once per registration, so a host that supplies\n * its own spec re-registers rather than mutating in place. The document half is\n * rebuilt per request, because the document is being edited alongside the\n * expression.\n */\nexport function registerCompletion(\n monaco: Monaco,\n languageId: string,\n options: CompletionOptions,\n) {\n return monaco.languages.registerCompletionItemProvider(\n languageId,\n completionProvider(monaco, languageId, options),\n );\n}\n\n/**\n * The provider `registerCompletion` installs, exposed so it can be driven\n * directly by a test over a real model rather than through Monaco's registry.\n */\nexport function completionProvider(\n monaco: Monaco,\n languageId: string,\n { spec, environment }: CompletionOptions,\n) {\n const items = catalogueItems(monaco, languageId, spec);\n return {\n // A dot must retrigger, or `k8s.` offers nothing until another key is hit.\n triggerCharacters: [\".\"],\n provideCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position) {\n const suggestions: monaco.languages.CompletionItem[] = environmentItems(\n monaco,\n model,\n position,\n languageId,\n environment,\n );\n const range = wordRange(model, position);\n for (const item of items) suggestions.push({ ...item, range });\n return { suggestions };\n },\n };\n}\n\n/**\n * A completion item without its range. The range depends on the cursor, so it\n * is attached per request while the rest of the item is built once.\n */\ntype Item = Omit<monaco.languages.CompletionItem, \"range\">;\n\nfunction catalogueItems(monaco: Monaco, languageId: string, spec: GomplateSpec): Item[] {\n switch (pathFlavour(languageId)) {\n case \"cel\":\n return celCompletionItems(monaco, spec);\n case \"gotemplate\":\n return goTemplateCompletionItems(monaco, spec);\n default:\n // JSONPath's dialect has no catalogue to generate from; its completions\n // come entirely from the document.\n return [];\n }\n}\n\n/**\n * The keys reachable from the cursor's position in the document.\n *\n * Each item replaces the whole path typed so far with a freshly rendered one,\n * rather than appending to it, so what lands in the editor is always valid in\n * that language — quoting an awkward key, or dropping the suggestion entirely\n * where the language cannot express the path.\n */\nfunction environmentItems(\n monaco: Monaco,\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n languageId: string,\n environment: EnvironmentSource | undefined,\n): monaco.languages.CompletionItem[] {\n if (!environment) return [];\n const document = environment();\n if (document === undefined || document === null) return [];\n\n const prefix = environmentPrefixAt(model, position, languageId);\n if (!prefix) return [];\n\n const parent = resolvePath(document, prefix.segments);\n if (parent === undefined) return [];\n\n const kinds = monaco.languages.CompletionItemKind;\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: prefix.startColumn,\n endColumn: prefix.endColumn,\n };\n\n // Monaco filters a candidate against the model text from the range start to\n // the cursor, so `filterText` has to continue what was typed rather than\n // repeat the rendered path: `pod.items[0]` does not match `pod.items.`, and\n // the subscripted keys would be filtered straight back out.\n const typedHead = prefix.typed.slice(0, prefix.typed.length - prefix.leaf.length);\n\n const items: monaco.languages.CompletionItem[] = [];\n for (const entry of childEntries(parent)) {\n const insertText = pathExpression(languageId, [...prefix.segments, entry.segment]);\n if (insertText === null) continue;\n items.push({\n label: entry.key,\n kind: entry.container ? kinds.Folder : kinds.Field,\n insertText,\n filterText: `${typedHead}${entry.key}`,\n detail: `${entry.kind} · ${entry.summary}`,\n // A key of the document being evaluated beats any catalogue entry: it is\n // what the author came to the editor to write.\n sortText: `0${entry.key}`,\n range,\n });\n }\n return items;\n}\n\nfunction celCompletionItems(monaco: Monaco, spec: GomplateSpec) {\n const kinds = monaco.languages.CompletionItemKind;\n const items: Item[] = [];\n\n for (const fn of spec.cel.functions) {\n items.push(buildFunctionItem(monaco, fn, celInsertText(fn), kinds.Function));\n }\n for (const macro of spec.cel.macros) {\n items.push(buildMacroItem(monaco, macro));\n }\n for (const keyword of spec.cel.keywords) {\n items.push({\n label: keyword,\n kind: kinds.Keyword,\n insertText: keyword,\n detail: \"CEL keyword\",\n });\n }\n for (const type of spec.cel.types) {\n items.push({ label: type, kind: kinds.TypeParameter, insertText: type, detail: \"CEL type\" });\n }\n return items;\n}\n\nfunction goTemplateCompletionItems(monaco: Monaco, spec: GomplateSpec) {\n const kinds = monaco.languages.CompletionItemKind;\n const items: Item[] = [];\n\n for (const fn of spec.gotemplate.functions) {\n items.push(buildFunctionItem(monaco, fn, fn.name, kinds.Function));\n }\n for (const builtin of spec.gotemplate.builtins) {\n items.push({\n label: builtin,\n kind: kinds.Function,\n insertText: builtin,\n detail: \"text/template builtin\",\n });\n }\n for (const keyword of spec.gotemplate.keywords) {\n items.push({\n label: keyword,\n kind: kinds.Keyword,\n insertText: keyword,\n detail: \"template keyword\",\n });\n }\n return items;\n}\n\nfunction buildFunctionItem(\n monaco: Monaco,\n fn: SpecFunction,\n insertText: string,\n kind: monaco.languages.CompletionItemKind,\n): Item {\n // A function with neither a Go signature nor an overload has no detail to\n // show; the key has to be absent rather than explicitly undefined.\n const detail = fn.signature ?? fn.overloads?.[0]?.result;\n return {\n label: fn.name,\n kind: fn.memberOnly ? monaco.languages.CompletionItemKind.Method : kind,\n insertText,\n ...(detail === undefined ? {} : { detail }),\n documentation: { value: functionDocumentation(fn) },\n filterText: fn.name,\n // Un-namespaced names first: they are the short, common ones, and a\n // namespace is easy to reach by typing its prefix.\n sortText: fn.namespace ? `2${fn.name}` : `1${fn.name}`,\n };\n}\n\nfunction buildMacroItem(monaco: Monaco, macro: SpecMacro): Item {\n return {\n label: macro.name,\n kind: monaco.languages.CompletionItemKind.Keyword,\n insertText: macro.name,\n detail: `macro (${macro.argCount === 0 ? \"variadic\" : `${macro.argCount} args`})`,\n documentation: { value: macroDocumentation(macro) },\n filterText: macro.name,\n sortText: `1${macro.name}`,\n };\n}\n\n/**\n * CEL functions take parentheses; a member-only function is offered without a\n * leading dot because the dot is already typed when completion fires.\n */\nfunction celInsertText(fn: SpecFunction) {\n const arity = fn.overloads?.[0]?.args.length ?? 0;\n const receiver = fn.overloads?.[0]?.member ? 1 : 0;\n return arity - receiver === 0 ? `${fn.name}()` : `${fn.name}(`;\n}\n\nfunction wordRange(\n model: {\n getWordUntilPosition(p: { lineNumber: number; column: number }): {\n startColumn: number;\n endColumn: number;\n };\n },\n position: { lineNumber: number; column: number },\n) {\n const word = model.getWordUntilPosition(position);\n return {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n}\n"],"names":["environment","pathFlavour","prefix","environmentPrefixAt","resolvePath","childEntries","pathExpression","functionDocumentation","macroDocumentation"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { GomplateSpec, Monaco } from './types';
2
+ import type * as monaco from "monaco-editor";
3
+ /** Supplies the document expressions are evaluated against, on every request. */
4
+ export type EnvironmentSource = () => unknown;
5
+ export interface CompletionOptions {
6
+ /** The catalogue to complete from — gomplate's, or a host's merged over it. */
7
+ spec: GomplateSpec;
8
+ environment?: EnvironmentSource | undefined;
9
+ }
10
+ /**
11
+ * Registers completion for one language.
12
+ *
13
+ * The catalogue half is built once per registration, so a host that supplies
14
+ * its own spec re-registers rather than mutating in place. The document half is
15
+ * rebuilt per request, because the document is being edited alongside the
16
+ * expression.
17
+ */
18
+ export declare function registerCompletion(monaco: Monaco, languageId: string, options: CompletionOptions): monaco.IDisposable;
19
+ /**
20
+ * The provider `registerCompletion` installs, exposed so it can be driven
21
+ * directly by a test over a real model rather than through Monaco's registry.
22
+ */
23
+ export declare function completionProvider(monaco: Monaco, languageId: string, { spec, environment }: CompletionOptions): {
24
+ triggerCharacters: string[];
25
+ provideCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position): {
26
+ suggestions: monaco.languages.CompletionItem[];
27
+ };
28
+ };
29
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/expressions/lang/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAA2B,MAAM,SAAS,CAAC;AAK7E,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,sBAM3B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,iBAAiB;;kCAMR,MAAM,CAAC,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,QAAQ;;;EAapF"}
@@ -0,0 +1,164 @@
1
+ import { functionDocumentation, macroDocumentation } from "./hover.js";
2
+ import { pathFlavour, resolvePath, childEntries, pathExpression } from "./environment.js";
3
+ import { environmentPrefixAt } from "./prefix.js";
4
+ function registerCompletion(monaco, languageId, options) {
5
+ return monaco.languages.registerCompletionItemProvider(
6
+ languageId,
7
+ completionProvider(monaco, languageId, options)
8
+ );
9
+ }
10
+ function completionProvider(monaco, languageId, { spec, environment }) {
11
+ const items = catalogueItems(monaco, languageId, spec);
12
+ return {
13
+ // A dot must retrigger, or `k8s.` offers nothing until another key is hit.
14
+ triggerCharacters: ["."],
15
+ provideCompletionItems(model, position) {
16
+ const suggestions = environmentItems(
17
+ monaco,
18
+ model,
19
+ position,
20
+ languageId,
21
+ environment
22
+ );
23
+ const range = wordRange(model, position);
24
+ for (const item of items) suggestions.push({ ...item, range });
25
+ return { suggestions };
26
+ }
27
+ };
28
+ }
29
+ function catalogueItems(monaco, languageId, spec) {
30
+ switch (pathFlavour(languageId)) {
31
+ case "cel":
32
+ return celCompletionItems(monaco, spec);
33
+ case "gotemplate":
34
+ return goTemplateCompletionItems(monaco, spec);
35
+ default:
36
+ return [];
37
+ }
38
+ }
39
+ function environmentItems(monaco, model, position, languageId, environment) {
40
+ if (!environment) return [];
41
+ const document = environment();
42
+ if (document === void 0 || document === null) return [];
43
+ const prefix = environmentPrefixAt(model, position, languageId);
44
+ if (!prefix) return [];
45
+ const parent = resolvePath(document, prefix.segments);
46
+ if (parent === void 0) return [];
47
+ const kinds = monaco.languages.CompletionItemKind;
48
+ const range = {
49
+ startLineNumber: position.lineNumber,
50
+ endLineNumber: position.lineNumber,
51
+ startColumn: prefix.startColumn,
52
+ endColumn: prefix.endColumn
53
+ };
54
+ const typedHead = prefix.typed.slice(0, prefix.typed.length - prefix.leaf.length);
55
+ const items = [];
56
+ for (const entry of childEntries(parent)) {
57
+ const insertText = pathExpression(languageId, [...prefix.segments, entry.segment]);
58
+ if (insertText === null) continue;
59
+ items.push({
60
+ label: entry.key,
61
+ kind: entry.container ? kinds.Folder : kinds.Field,
62
+ insertText,
63
+ filterText: `${typedHead}${entry.key}`,
64
+ detail: `${entry.kind} · ${entry.summary}`,
65
+ // A key of the document being evaluated beats any catalogue entry: it is
66
+ // what the author came to the editor to write.
67
+ sortText: `0${entry.key}`,
68
+ range
69
+ });
70
+ }
71
+ return items;
72
+ }
73
+ function celCompletionItems(monaco, spec) {
74
+ const kinds = monaco.languages.CompletionItemKind;
75
+ const items = [];
76
+ for (const fn of spec.cel.functions) {
77
+ items.push(buildFunctionItem(monaco, fn, celInsertText(fn), kinds.Function));
78
+ }
79
+ for (const macro of spec.cel.macros) {
80
+ items.push(buildMacroItem(monaco, macro));
81
+ }
82
+ for (const keyword of spec.cel.keywords) {
83
+ items.push({
84
+ label: keyword,
85
+ kind: kinds.Keyword,
86
+ insertText: keyword,
87
+ detail: "CEL keyword"
88
+ });
89
+ }
90
+ for (const type of spec.cel.types) {
91
+ items.push({ label: type, kind: kinds.TypeParameter, insertText: type, detail: "CEL type" });
92
+ }
93
+ return items;
94
+ }
95
+ function goTemplateCompletionItems(monaco, spec) {
96
+ const kinds = monaco.languages.CompletionItemKind;
97
+ const items = [];
98
+ for (const fn of spec.gotemplate.functions) {
99
+ items.push(buildFunctionItem(monaco, fn, fn.name, kinds.Function));
100
+ }
101
+ for (const builtin of spec.gotemplate.builtins) {
102
+ items.push({
103
+ label: builtin,
104
+ kind: kinds.Function,
105
+ insertText: builtin,
106
+ detail: "text/template builtin"
107
+ });
108
+ }
109
+ for (const keyword of spec.gotemplate.keywords) {
110
+ items.push({
111
+ label: keyword,
112
+ kind: kinds.Keyword,
113
+ insertText: keyword,
114
+ detail: "template keyword"
115
+ });
116
+ }
117
+ return items;
118
+ }
119
+ function buildFunctionItem(monaco, fn, insertText, kind) {
120
+ var _a, _b;
121
+ const detail = fn.signature ?? ((_b = (_a = fn.overloads) == null ? void 0 : _a[0]) == null ? void 0 : _b.result);
122
+ return {
123
+ label: fn.name,
124
+ kind: fn.memberOnly ? monaco.languages.CompletionItemKind.Method : kind,
125
+ insertText,
126
+ ...detail === void 0 ? {} : { detail },
127
+ documentation: { value: functionDocumentation(fn) },
128
+ filterText: fn.name,
129
+ // Un-namespaced names first: they are the short, common ones, and a
130
+ // namespace is easy to reach by typing its prefix.
131
+ sortText: fn.namespace ? `2${fn.name}` : `1${fn.name}`
132
+ };
133
+ }
134
+ function buildMacroItem(monaco, macro) {
135
+ return {
136
+ label: macro.name,
137
+ kind: monaco.languages.CompletionItemKind.Keyword,
138
+ insertText: macro.name,
139
+ detail: `macro (${macro.argCount === 0 ? "variadic" : `${macro.argCount} args`})`,
140
+ documentation: { value: macroDocumentation(macro) },
141
+ filterText: macro.name,
142
+ sortText: `1${macro.name}`
143
+ };
144
+ }
145
+ function celInsertText(fn) {
146
+ var _a, _b, _c, _d;
147
+ const arity = ((_b = (_a = fn.overloads) == null ? void 0 : _a[0]) == null ? void 0 : _b.args.length) ?? 0;
148
+ const receiver = ((_d = (_c = fn.overloads) == null ? void 0 : _c[0]) == null ? void 0 : _d.member) ? 1 : 0;
149
+ return arity - receiver === 0 ? `${fn.name}()` : `${fn.name}(`;
150
+ }
151
+ function wordRange(model, position) {
152
+ const word = model.getWordUntilPosition(position);
153
+ return {
154
+ startLineNumber: position.lineNumber,
155
+ endLineNumber: position.lineNumber,
156
+ startColumn: word.startColumn,
157
+ endColumn: word.endColumn
158
+ };
159
+ }
160
+ export {
161
+ completionProvider,
162
+ registerCompletion
163
+ };
164
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sources":["../../../src/expressions/lang/completion.ts"],"sourcesContent":["import type * as monaco from \"monaco-editor\";\nimport type { GomplateSpec, Monaco, SpecFunction, SpecMacro } from \"./types\";\nimport { functionDocumentation, macroDocumentation } from \"./hover\";\nimport { childEntries, pathExpression, pathFlavour, resolvePath } from \"./environment\";\nimport { environmentPrefixAt } from \"./prefix\";\n\n/** Supplies the document expressions are evaluated against, on every request. */\nexport type EnvironmentSource = () => unknown;\n\nexport interface CompletionOptions {\n /** The catalogue to complete from — gomplate's, or a host's merged over it. */\n spec: GomplateSpec;\n environment?: EnvironmentSource | undefined;\n}\n\n/**\n * Registers completion for one language.\n *\n * The catalogue half is built once per registration, so a host that supplies\n * its own spec re-registers rather than mutating in place. The document half is\n * rebuilt per request, because the document is being edited alongside the\n * expression.\n */\nexport function registerCompletion(\n monaco: Monaco,\n languageId: string,\n options: CompletionOptions,\n) {\n return monaco.languages.registerCompletionItemProvider(\n languageId,\n completionProvider(monaco, languageId, options),\n );\n}\n\n/**\n * The provider `registerCompletion` installs, exposed so it can be driven\n * directly by a test over a real model rather than through Monaco's registry.\n */\nexport function completionProvider(\n monaco: Monaco,\n languageId: string,\n { spec, environment }: CompletionOptions,\n) {\n const items = catalogueItems(monaco, languageId, spec);\n return {\n // A dot must retrigger, or `k8s.` offers nothing until another key is hit.\n triggerCharacters: [\".\"],\n provideCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position) {\n const suggestions: monaco.languages.CompletionItem[] = environmentItems(\n monaco,\n model,\n position,\n languageId,\n environment,\n );\n const range = wordRange(model, position);\n for (const item of items) suggestions.push({ ...item, range });\n return { suggestions };\n },\n };\n}\n\n/**\n * A completion item without its range. The range depends on the cursor, so it\n * is attached per request while the rest of the item is built once.\n */\ntype Item = Omit<monaco.languages.CompletionItem, \"range\">;\n\nfunction catalogueItems(monaco: Monaco, languageId: string, spec: GomplateSpec): Item[] {\n switch (pathFlavour(languageId)) {\n case \"cel\":\n return celCompletionItems(monaco, spec);\n case \"gotemplate\":\n return goTemplateCompletionItems(monaco, spec);\n default:\n // JSONPath's dialect has no catalogue to generate from; its completions\n // come entirely from the document.\n return [];\n }\n}\n\n/**\n * The keys reachable from the cursor's position in the document.\n *\n * Each item replaces the whole path typed so far with a freshly rendered one,\n * rather than appending to it, so what lands in the editor is always valid in\n * that language — quoting an awkward key, or dropping the suggestion entirely\n * where the language cannot express the path.\n */\nfunction environmentItems(\n monaco: Monaco,\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n languageId: string,\n environment: EnvironmentSource | undefined,\n): monaco.languages.CompletionItem[] {\n if (!environment) return [];\n const document = environment();\n if (document === undefined || document === null) return [];\n\n const prefix = environmentPrefixAt(model, position, languageId);\n if (!prefix) return [];\n\n const parent = resolvePath(document, prefix.segments);\n if (parent === undefined) return [];\n\n const kinds = monaco.languages.CompletionItemKind;\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: prefix.startColumn,\n endColumn: prefix.endColumn,\n };\n\n // Monaco filters a candidate against the model text from the range start to\n // the cursor, so `filterText` has to continue what was typed rather than\n // repeat the rendered path: `pod.items[0]` does not match `pod.items.`, and\n // the subscripted keys would be filtered straight back out.\n const typedHead = prefix.typed.slice(0, prefix.typed.length - prefix.leaf.length);\n\n const items: monaco.languages.CompletionItem[] = [];\n for (const entry of childEntries(parent)) {\n const insertText = pathExpression(languageId, [...prefix.segments, entry.segment]);\n if (insertText === null) continue;\n items.push({\n label: entry.key,\n kind: entry.container ? kinds.Folder : kinds.Field,\n insertText,\n filterText: `${typedHead}${entry.key}`,\n detail: `${entry.kind} · ${entry.summary}`,\n // A key of the document being evaluated beats any catalogue entry: it is\n // what the author came to the editor to write.\n sortText: `0${entry.key}`,\n range,\n });\n }\n return items;\n}\n\nfunction celCompletionItems(monaco: Monaco, spec: GomplateSpec) {\n const kinds = monaco.languages.CompletionItemKind;\n const items: Item[] = [];\n\n for (const fn of spec.cel.functions) {\n items.push(buildFunctionItem(monaco, fn, celInsertText(fn), kinds.Function));\n }\n for (const macro of spec.cel.macros) {\n items.push(buildMacroItem(monaco, macro));\n }\n for (const keyword of spec.cel.keywords) {\n items.push({\n label: keyword,\n kind: kinds.Keyword,\n insertText: keyword,\n detail: \"CEL keyword\",\n });\n }\n for (const type of spec.cel.types) {\n items.push({ label: type, kind: kinds.TypeParameter, insertText: type, detail: \"CEL type\" });\n }\n return items;\n}\n\nfunction goTemplateCompletionItems(monaco: Monaco, spec: GomplateSpec) {\n const kinds = monaco.languages.CompletionItemKind;\n const items: Item[] = [];\n\n for (const fn of spec.gotemplate.functions) {\n items.push(buildFunctionItem(monaco, fn, fn.name, kinds.Function));\n }\n for (const builtin of spec.gotemplate.builtins) {\n items.push({\n label: builtin,\n kind: kinds.Function,\n insertText: builtin,\n detail: \"text/template builtin\",\n });\n }\n for (const keyword of spec.gotemplate.keywords) {\n items.push({\n label: keyword,\n kind: kinds.Keyword,\n insertText: keyword,\n detail: \"template keyword\",\n });\n }\n return items;\n}\n\nfunction buildFunctionItem(\n monaco: Monaco,\n fn: SpecFunction,\n insertText: string,\n kind: monaco.languages.CompletionItemKind,\n): Item {\n // A function with neither a Go signature nor an overload has no detail to\n // show; the key has to be absent rather than explicitly undefined.\n const detail = fn.signature ?? fn.overloads?.[0]?.result;\n return {\n label: fn.name,\n kind: fn.memberOnly ? monaco.languages.CompletionItemKind.Method : kind,\n insertText,\n ...(detail === undefined ? {} : { detail }),\n documentation: { value: functionDocumentation(fn) },\n filterText: fn.name,\n // Un-namespaced names first: they are the short, common ones, and a\n // namespace is easy to reach by typing its prefix.\n sortText: fn.namespace ? `2${fn.name}` : `1${fn.name}`,\n };\n}\n\nfunction buildMacroItem(monaco: Monaco, macro: SpecMacro): Item {\n return {\n label: macro.name,\n kind: monaco.languages.CompletionItemKind.Keyword,\n insertText: macro.name,\n detail: `macro (${macro.argCount === 0 ? \"variadic\" : `${macro.argCount} args`})`,\n documentation: { value: macroDocumentation(macro) },\n filterText: macro.name,\n sortText: `1${macro.name}`,\n };\n}\n\n/**\n * CEL functions take parentheses; a member-only function is offered without a\n * leading dot because the dot is already typed when completion fires.\n */\nfunction celInsertText(fn: SpecFunction) {\n const arity = fn.overloads?.[0]?.args.length ?? 0;\n const receiver = fn.overloads?.[0]?.member ? 1 : 0;\n return arity - receiver === 0 ? `${fn.name}()` : `${fn.name}(`;\n}\n\nfunction wordRange(\n model: {\n getWordUntilPosition(p: { lineNumber: number; column: number }): {\n startColumn: number;\n endColumn: number;\n };\n },\n position: { lineNumber: number; column: number },\n) {\n const word = model.getWordUntilPosition(position);\n return {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n}\n"],"names":[],"mappings":"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"}