@rebasepro/plugin-data-enhancement 0.2.1 → 0.2.4

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 (408) hide show
  1. package/dist/admin/src/collection_editor/CollectionEditorDialogsContext.d.ts +19 -0
  2. package/dist/admin/src/collection_editor/ConfigControllerProvider.d.ts +36 -0
  3. package/dist/admin/src/collection_editor/_cms_internals.d.ts +29 -0
  4. package/dist/admin/src/collection_editor/api/generateCollectionApi.d.ts +77 -0
  5. package/dist/admin/src/collection_editor/index.d.ts +15 -0
  6. package/dist/admin/src/collection_editor/pgColumnToProperty.d.ts +6 -0
  7. package/dist/admin/src/collection_editor/types/collection_editor_controller.d.ts +57 -0
  8. package/dist/admin/src/collection_editor/types/collection_inference.d.ts +10 -0
  9. package/dist/admin/src/collection_editor/types/config_controller.d.ts +98 -0
  10. package/dist/admin/src/collection_editor/ui/EditorCollectionAction.d.ts +2 -0
  11. package/dist/admin/src/collection_editor/ui/MissingReferenceWidget.d.ts +3 -0
  12. package/dist/admin/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +36 -0
  13. package/dist/admin/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
  14. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +71 -0
  15. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +19 -0
  16. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
  17. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +16 -0
  18. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +12 -0
  19. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +5 -0
  20. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +14 -0
  21. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +5 -0
  22. package/dist/admin/src/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
  23. package/dist/admin/src/collection_editor/ui/collection_editor/EnumForm.d.ts +12 -0
  24. package/dist/admin/src/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
  25. package/dist/admin/src/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +6 -0
  26. package/dist/admin/src/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
  27. package/dist/admin/src/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +5 -0
  28. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyEditView.d.ts +47 -0
  29. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +16 -0
  30. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyTree.d.ts +31 -0
  31. package/dist/admin/src/collection_editor/ui/collection_editor/SwitchControl.d.ts +8 -0
  32. package/dist/admin/src/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
  33. package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +7 -0
  34. package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +13 -0
  35. package/dist/admin/src/collection_editor/ui/collection_editor/import/clean_import_data.d.ts +7 -0
  36. package/dist/admin/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +7 -0
  37. package/dist/admin/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +3 -0
  38. package/dist/admin/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.d.ts +10 -0
  39. package/dist/admin/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +3 -0
  40. package/dist/admin/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +9 -0
  41. package/dist/admin/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +3 -0
  42. package/dist/admin/src/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +7 -0
  43. package/dist/admin/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +4 -0
  44. package/dist/admin/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +3 -0
  45. package/dist/admin/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +14 -0
  46. package/dist/admin/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +9 -0
  47. package/dist/admin/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +9 -0
  48. package/dist/admin/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +5 -0
  49. package/dist/admin/src/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +5 -0
  50. package/dist/admin/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +4 -0
  51. package/dist/admin/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +3 -0
  52. package/dist/admin/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +3 -0
  53. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +5 -0
  54. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +4 -0
  55. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +3 -0
  56. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +11 -0
  57. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +3 -0
  58. package/dist/admin/src/collection_editor/ui/collection_editor/templates/blog_template.d.ts +2 -0
  59. package/dist/admin/src/collection_editor/ui/collection_editor/templates/pages_template.d.ts +2 -0
  60. package/dist/admin/src/collection_editor/ui/collection_editor/templates/products_template.d.ts +2 -0
  61. package/dist/admin/src/collection_editor/ui/collection_editor/templates/users_template.d.ts +2 -0
  62. package/dist/admin/src/collection_editor/ui/collection_editor/util.d.ts +5 -0
  63. package/dist/admin/src/collection_editor/ui/collection_editor/utils/strings.d.ts +1 -0
  64. package/dist/admin/src/collection_editor/ui/collection_editor/utils/supported_fields.d.ts +3 -0
  65. package/dist/admin/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.d.ts +2 -0
  66. package/dist/admin/src/collection_editor/useCollectionEditorController.d.ts +6 -0
  67. package/dist/admin/src/collection_editor/useCollectionsConfigController.d.ts +6 -0
  68. package/dist/admin/src/collection_editor/useLocalCollectionsConfigController.d.ts +6 -0
  69. package/dist/admin/src/collection_editor/validateCollectionJson.d.ts +22 -0
  70. package/dist/admin/src/components/AdminModeSyncer.d.ts +17 -0
  71. package/dist/admin/src/components/ArrayContainer.d.ts +58 -0
  72. package/dist/admin/src/components/ClearFilterSortButton.d.ts +5 -0
  73. package/dist/admin/src/components/CollectionEditorDialogs.d.ts +15 -0
  74. package/dist/admin/src/components/DefaultAppBar.d.ts +46 -0
  75. package/dist/admin/src/components/DefaultDrawer.d.ts +77 -0
  76. package/dist/admin/src/components/DeleteEntityDialog.d.ts +13 -0
  77. package/dist/admin/src/components/DrawerNavigationGroup.d.ts +49 -0
  78. package/dist/admin/src/components/DrawerNavigationItem.d.ts +10 -0
  79. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +39 -0
  80. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTable.d.ts +27 -0
  81. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +129 -0
  82. package/dist/admin/src/components/EntityCollectionTable/PropertyTableCell.d.ts +26 -0
  83. package/dist/admin/src/components/EntityCollectionTable/column_utils.d.ts +16 -0
  84. package/dist/admin/src/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +21 -0
  85. package/dist/admin/src/components/EntityCollectionTable/fields/TableReferenceField.d.ts +22 -0
  86. package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationField.d.ts +22 -0
  87. package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +20 -0
  88. package/dist/admin/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +35 -0
  89. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +12 -0
  90. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +9 -0
  91. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +8 -0
  92. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +15 -0
  93. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +7 -0
  94. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +12 -0
  95. package/dist/admin/src/components/EntityCollectionTable/index.d.ts +6 -0
  96. package/dist/admin/src/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +25 -0
  97. package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +32 -0
  98. package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  99. package/dist/admin/src/components/EntityCollectionTable/internal/common.d.ts +5 -0
  100. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +27 -0
  101. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  102. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  103. package/dist/admin/src/components/EntityCollectionTable/table_bindings.d.ts +29 -0
  104. package/dist/admin/src/components/EntityCollectionView/Board.d.ts +2 -0
  105. package/dist/admin/src/components/EntityCollectionView/BoardColumn.d.ts +42 -0
  106. package/dist/admin/src/components/EntityCollectionView/BoardColumnTitle.d.ts +9 -0
  107. package/dist/admin/src/components/EntityCollectionView/BoardSortableList.d.ts +14 -0
  108. package/dist/admin/src/components/EntityCollectionView/EntityBoardCard.d.ts +31 -0
  109. package/dist/admin/src/components/EntityCollectionView/EntityCard.d.ts +20 -0
  110. package/dist/admin/src/components/EntityCollectionView/EntityCollectionBoardView.d.ts +22 -0
  111. package/dist/admin/src/components/EntityCollectionView/EntityCollectionCardView.d.ts +32 -0
  112. package/dist/admin/src/components/EntityCollectionView/EntityCollectionListView.d.ts +50 -0
  113. package/dist/admin/src/components/EntityCollectionView/EntityCollectionView.d.ts +65 -0
  114. package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewActions.d.ts +20 -0
  115. package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +20 -0
  116. package/dist/admin/src/components/EntityCollectionView/FilterPresetsButton.d.ts +21 -0
  117. package/dist/admin/src/components/EntityCollectionView/FiltersDialog.d.ts +15 -0
  118. package/dist/admin/src/components/EntityCollectionView/SplitListView.d.ts +58 -0
  119. package/dist/admin/src/components/EntityCollectionView/ViewModeToggle.d.ts +44 -0
  120. package/dist/admin/src/components/EntityCollectionView/board_types.d.ts +105 -0
  121. package/dist/admin/src/components/EntityCollectionView/hooks/useCollectionInlineEditor.d.ts +12 -0
  122. package/dist/admin/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +20 -0
  123. package/dist/admin/src/components/EntityCollectionView/useBoardDataController.d.ts +61 -0
  124. package/dist/admin/src/components/EntityCollectionView/useEntityPreviewSlots.d.ts +101 -0
  125. package/dist/admin/src/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  126. package/dist/admin/src/components/EntityCollectionView/utils.d.ts +3 -0
  127. package/dist/admin/src/components/EntityDetailView.d.ts +31 -0
  128. package/dist/admin/src/components/EntityEditView.d.ts +58 -0
  129. package/dist/admin/src/components/EntityEditViewFormActions.d.ts +2 -0
  130. package/dist/admin/src/components/EntityJsonPreview.d.ts +3 -0
  131. package/dist/admin/src/components/EntityPreview.d.ts +56 -0
  132. package/dist/admin/src/components/EntitySidePanel.d.ts +10 -0
  133. package/dist/admin/src/components/EntityView.d.ts +12 -0
  134. package/dist/admin/src/components/FieldCaption.d.ts +5 -0
  135. package/dist/admin/src/components/HomePage/ContentHomePage.d.ts +11 -0
  136. package/dist/admin/src/components/HomePage/FavouritesView.d.ts +3 -0
  137. package/dist/admin/src/components/HomePage/HomePageDnD.d.ts +77 -0
  138. package/dist/admin/src/components/HomePage/NavigationCard.d.ts +11 -0
  139. package/dist/admin/src/components/HomePage/NavigationCardBinding.d.ts +18 -0
  140. package/dist/admin/src/components/HomePage/NavigationGroup.d.ts +11 -0
  141. package/dist/admin/src/components/HomePage/RenameGroupDialog.d.ts +9 -0
  142. package/dist/admin/src/components/HomePage/SmallNavigationCard.d.ts +6 -0
  143. package/dist/admin/src/components/PropertyCollectionView.d.ts +24 -0
  144. package/dist/admin/src/components/PropertyConfigBadge.d.ts +6 -0
  145. package/dist/admin/src/components/PropertyIdCopyTooltip.d.ts +8 -0
  146. package/dist/admin/src/components/RebaseAuthGate.d.ts +21 -0
  147. package/dist/admin/src/components/RebaseCMS.d.ts +10 -0
  148. package/dist/admin/src/components/RebaseLayout.d.ts +32 -0
  149. package/dist/admin/src/components/RebaseNavigation.d.ts +24 -0
  150. package/dist/admin/src/components/RebaseRouteDefs.d.ts +30 -0
  151. package/dist/admin/src/components/RebaseShell.d.ts +25 -0
  152. package/dist/admin/src/components/ReferenceTable/EntitySelectionTable.d.ts +59 -0
  153. package/dist/admin/src/components/ReferenceWidget.d.ts +30 -0
  154. package/dist/admin/src/components/RelationSelector.d.ts +32 -0
  155. package/dist/admin/src/components/SearchIconsView.d.ts +5 -0
  156. package/dist/admin/src/components/SelectableTable/SelectableTable.d.ts +95 -0
  157. package/dist/admin/src/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  158. package/dist/admin/src/components/SelectableTable/SelectionStore.d.ts +29 -0
  159. package/dist/admin/src/components/SelectableTable/filters/BooleanFilterField.d.ts +9 -0
  160. package/dist/admin/src/components/SelectableTable/filters/DateTimeFilterField.d.ts +12 -0
  161. package/dist/admin/src/components/SelectableTable/filters/ReferenceFilterField.d.ts +15 -0
  162. package/dist/admin/src/components/SelectableTable/filters/RelationFilterField.d.ts +12 -0
  163. package/dist/admin/src/components/SelectableTable/filters/StringNumberFilterField.d.ts +13 -0
  164. package/dist/admin/src/components/SideDialogs.d.ts +25 -0
  165. package/dist/admin/src/components/SideEntityProvider.d.ts +32 -0
  166. package/dist/admin/src/components/UserSelector.d.ts +18 -0
  167. package/dist/admin/src/components/admin/CreationResultDialog.d.ts +5 -0
  168. package/dist/admin/src/components/admin/RoleChip.d.ts +4 -0
  169. package/dist/admin/src/components/admin/RolesFilterSelect.d.ts +2 -0
  170. package/dist/admin/src/components/admin/RolesView.d.ts +4 -0
  171. package/dist/admin/src/components/admin/UserRolesSelectField.d.ts +2 -0
  172. package/dist/admin/src/components/app/AppBar.d.ts +12 -0
  173. package/dist/admin/src/components/app/Drawer.d.ts +26 -0
  174. package/dist/admin/src/components/app/Scaffold.d.ts +34 -0
  175. package/dist/admin/src/components/app/useApp.d.ts +17 -0
  176. package/dist/admin/src/components/common/default_entity_actions.d.ts +10 -0
  177. package/dist/admin/src/components/common/index.d.ts +1 -0
  178. package/dist/admin/src/components/field_configs.d.ts +7 -0
  179. package/dist/admin/src/components/history/EntityHistoryEntry.d.ts +17 -0
  180. package/dist/admin/src/components/history/EntityHistoryView.d.ts +6 -0
  181. package/dist/admin/src/components/history/LastEditedByFormAction.d.ts +6 -0
  182. package/dist/admin/src/components/history/LastEditedByIndicator.d.ts +10 -0
  183. package/dist/admin/src/components/history/UserChip.d.ts +4 -0
  184. package/dist/admin/src/components/history/index.d.ts +5 -0
  185. package/dist/admin/src/components/index.d.ts +39 -0
  186. package/dist/admin/src/contexts/BreacrumbsContext.d.ts +8 -0
  187. package/dist/admin/src/contexts/SideDialogsControllerContext.d.ts +3 -0
  188. package/dist/admin/src/data_export/export/BasicExportAction.d.ts +7 -0
  189. package/dist/admin/src/data_export/export/ExportCollectionAction.d.ts +11 -0
  190. package/dist/admin/src/data_export/export/export.d.ts +22 -0
  191. package/dist/admin/src/data_export/export/index.d.ts +3 -0
  192. package/dist/admin/src/data_export/index.d.ts +1 -0
  193. package/dist/admin/src/data_import/components/DataNewPropertiesMapping.d.ts +13 -0
  194. package/dist/admin/src/data_import/components/ImportFileUpload.d.ts +3 -0
  195. package/dist/admin/src/data_import/components/ImportNewPropertyFieldPreview.d.ts +9 -0
  196. package/dist/admin/src/data_import/components/ImportSaveInProgress.d.ts +8 -0
  197. package/dist/admin/src/data_import/components/index.d.ts +4 -0
  198. package/dist/admin/src/data_import/hooks/index.d.ts +1 -0
  199. package/dist/admin/src/data_import/hooks/useImportConfig.d.ts +2 -0
  200. package/dist/admin/src/data_import/import/ImportCollectionAction.d.ts +15 -0
  201. package/dist/admin/src/data_import/import/index.d.ts +1 -0
  202. package/dist/admin/src/data_import/index.d.ts +5 -0
  203. package/dist/admin/src/data_import/types/column_mapping.d.ts +20 -0
  204. package/dist/admin/src/data_import/types/index.d.ts +1 -0
  205. package/dist/admin/src/data_import/utils/data.d.ts +4 -0
  206. package/dist/admin/src/data_import/utils/file_headers.d.ts +6 -0
  207. package/dist/admin/src/data_import/utils/file_to_json.d.ts +6 -0
  208. package/dist/admin/src/data_import/utils/get_import_inference_type.d.ts +2 -0
  209. package/dist/admin/src/data_import/utils/index.d.ts +3 -0
  210. package/dist/admin/src/data_import/utils/transforms.d.ts +11 -0
  211. package/dist/admin/src/editor/components/SlashCommandMenu.d.ts +6 -0
  212. package/dist/admin/src/editor/components/editor-bubble-item.d.ts +8 -0
  213. package/dist/admin/src/editor/components/editor-bubble.d.ts +12 -0
  214. package/dist/admin/src/editor/components/image-bubble.d.ts +9 -0
  215. package/dist/admin/src/editor/components/index.d.ts +16 -0
  216. package/dist/admin/src/editor/components/table-bubble.d.ts +9 -0
  217. package/dist/admin/src/editor/editor.d.ts +30 -0
  218. package/dist/admin/src/editor/extensions/HighlightDecorationExtension.d.ts +24 -0
  219. package/dist/admin/src/editor/extensions/Image.d.ts +6 -0
  220. package/dist/admin/src/editor/extensions/TextLoadingDecorationExtension.d.ts +16 -0
  221. package/dist/admin/src/editor/extensions/clipboard.d.ts +7 -0
  222. package/dist/admin/src/editor/extensions/drag-and-drop.d.ts +9 -0
  223. package/dist/admin/src/editor/hooks/useProseMirror.d.ts +13 -0
  224. package/dist/admin/src/editor/hooks/useProseMirrorContext.d.ts +9 -0
  225. package/dist/admin/src/editor/index.d.ts +2 -0
  226. package/dist/admin/src/editor/markdown.d.ts +5 -0
  227. package/dist/admin/src/editor/nodeViews/ImageComponent.d.ts +3 -0
  228. package/dist/admin/src/editor/nodeViews/ReactNodeView.d.ts +32 -0
  229. package/dist/admin/src/editor/nodeViews/TaskItemComponent.d.ts +3 -0
  230. package/dist/admin/src/editor/nodeViews/index.d.ts +6 -0
  231. package/dist/admin/src/editor/plugins/index.d.ts +2 -0
  232. package/dist/admin/src/editor/plugins/inputrules.d.ts +6 -0
  233. package/dist/admin/src/editor/plugins/placeholderPlugin.d.ts +3 -0
  234. package/dist/admin/src/editor/plugins/slashCommandPlugin.d.ts +12 -0
  235. package/dist/admin/src/editor/schema.d.ts +2 -0
  236. package/dist/admin/src/editor/selectors/link-selector.d.ts +8 -0
  237. package/dist/admin/src/editor/selectors/node-selector.d.ts +15 -0
  238. package/dist/admin/src/editor/selectors/text-buttons.d.ts +1 -0
  239. package/dist/admin/src/editor/types.d.ts +5 -0
  240. package/dist/admin/src/editor/utils/prosemirror-utils.d.ts +7 -0
  241. package/dist/admin/src/editor/utils/remove_classes.d.ts +1 -0
  242. package/dist/admin/src/form/EntityForm.d.ts +10 -0
  243. package/dist/admin/src/form/EntityFormActions.d.ts +2 -0
  244. package/dist/admin/src/form/PropertyFieldBinding.d.ts +30 -0
  245. package/dist/admin/src/form/components/ErrorFocus.d.ts +4 -0
  246. package/dist/admin/src/form/components/FieldHelperText.d.ts +12 -0
  247. package/dist/admin/src/form/components/FormEntry.d.ts +6 -0
  248. package/dist/admin/src/form/components/FormLayout.d.ts +5 -0
  249. package/dist/admin/src/form/components/LabelWithIcon.d.ts +14 -0
  250. package/dist/admin/src/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  251. package/dist/admin/src/form/components/LocalChangesMenu.d.ts +11 -0
  252. package/dist/admin/src/form/components/StorageItemPreview.d.ts +14 -0
  253. package/dist/admin/src/form/components/StorageUploadProgress.d.ts +10 -0
  254. package/dist/admin/src/form/components/index.d.ts +5 -0
  255. package/dist/admin/src/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +10 -0
  256. package/dist/admin/src/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +13 -0
  257. package/dist/admin/src/form/field_bindings/BlockFieldBinding.d.ts +11 -0
  258. package/dist/admin/src/form/field_bindings/DateTimeFieldBinding.d.ts +12 -0
  259. package/dist/admin/src/form/field_bindings/KeyValueFieldBinding.d.ts +8 -0
  260. package/dist/admin/src/form/field_bindings/MapFieldBinding.d.ts +10 -0
  261. package/dist/admin/src/form/field_bindings/MarkdownEditorFieldBinding.d.ts +12 -0
  262. package/dist/admin/src/form/field_bindings/MultiSelectFieldBinding.d.ts +10 -0
  263. package/dist/admin/src/form/field_bindings/MultipleRelationFieldBinding.d.ts +10 -0
  264. package/dist/admin/src/form/field_bindings/ReadOnlyFieldBinding.d.ts +11 -0
  265. package/dist/admin/src/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +10 -0
  266. package/dist/admin/src/form/field_bindings/ReferenceFieldBinding.d.ts +10 -0
  267. package/dist/admin/src/form/field_bindings/RelationFieldBinding.d.ts +3 -0
  268. package/dist/admin/src/form/field_bindings/RepeatFieldBinding.d.ts +11 -0
  269. package/dist/admin/src/form/field_bindings/SelectFieldBinding.d.ts +11 -0
  270. package/dist/admin/src/form/field_bindings/StorageUploadFieldBinding.d.ts +21 -0
  271. package/dist/admin/src/form/field_bindings/SwitchFieldBinding.d.ts +10 -0
  272. package/dist/admin/src/form/field_bindings/TextFieldBinding.d.ts +9 -0
  273. package/dist/admin/src/form/field_bindings/UserSelectFieldBinding.d.ts +14 -0
  274. package/dist/admin/src/form/field_bindings/VectorFieldBinding.d.ts +11 -0
  275. package/dist/admin/src/form/index.d.ts +21 -0
  276. package/dist/admin/src/form/useClearRestoreValue.d.ts +13 -0
  277. package/dist/admin/src/form/validation.d.ts +21 -0
  278. package/dist/admin/src/hooks/index.d.ts +15 -0
  279. package/dist/admin/src/hooks/navigation/contexts/CollectionRegistryContext.d.ts +5 -0
  280. package/dist/admin/src/hooks/navigation/contexts/NavigationStateContext.d.ts +4 -0
  281. package/dist/admin/src/hooks/navigation/contexts/UrlContext.d.ts +4 -0
  282. package/dist/admin/src/hooks/navigation/contexts/index.d.ts +3 -0
  283. package/dist/admin/src/hooks/navigation/useBuildCollectionRegistryController.d.ts +7 -0
  284. package/dist/admin/src/hooks/navigation/useBuildNavigationStateController.d.ts +34 -0
  285. package/dist/admin/src/hooks/navigation/useBuildUrlController.d.ts +7 -0
  286. package/dist/admin/src/hooks/navigation/useNavigationResolution.d.ts +7 -0
  287. package/dist/admin/src/hooks/navigation/useResolvedCollections.d.ts +34 -0
  288. package/dist/admin/src/hooks/navigation/useResolvedViews.d.ts +29 -0
  289. package/dist/admin/src/hooks/navigation/useTopLevelNavigation.d.ts +27 -0
  290. package/dist/admin/src/hooks/navigation/utils.d.ts +12 -0
  291. package/dist/admin/src/hooks/useBreadcrumbsController.d.ts +42 -0
  292. package/dist/admin/src/hooks/useBuildSideDialogsController.d.ts +2 -0
  293. package/dist/admin/src/hooks/useBuildSideEntityController.d.ts +6 -0
  294. package/dist/admin/src/hooks/useCMSContext.d.ts +27 -0
  295. package/dist/admin/src/hooks/useEntityHistory.d.ts +30 -0
  296. package/dist/admin/src/hooks/useEntitySelectionDialog.d.ts +18 -0
  297. package/dist/admin/src/hooks/useResolvedNavigationFrom.d.ts +73 -0
  298. package/dist/admin/src/hooks/useSideDialogsController.d.ts +19 -0
  299. package/dist/admin/src/hooks/useSideEntityController.d.ts +11 -0
  300. package/dist/admin/src/index.d.ts +15 -0
  301. package/dist/admin/src/preview/PropertyPreview.d.ts +7 -0
  302. package/dist/admin/src/preview/components/ArrayEnumPreview.d.ts +11 -0
  303. package/dist/admin/src/preview/components/BooleanPreview.d.ts +11 -0
  304. package/dist/admin/src/preview/components/DatePreview.d.ts +17 -0
  305. package/dist/admin/src/preview/components/EmptyValue.d.ts +6 -0
  306. package/dist/admin/src/preview/components/EnumValuesChip.d.ts +13 -0
  307. package/dist/admin/src/preview/components/ImagePreview.d.ts +16 -0
  308. package/dist/admin/src/preview/components/ReferencePreview.d.ts +17 -0
  309. package/dist/admin/src/preview/components/RelationPreview.d.ts +17 -0
  310. package/dist/admin/src/preview/components/StorageThumbnail.d.ts +15 -0
  311. package/dist/admin/src/preview/components/UrlComponentPreview.d.ts +15 -0
  312. package/dist/admin/src/preview/components/UserPreview.d.ts +9 -0
  313. package/dist/admin/src/preview/index.d.ts +23 -0
  314. package/dist/admin/src/preview/property_previews/ArrayOfMapsPreview.d.ts +6 -0
  315. package/dist/admin/src/preview/property_previews/ArrayOfReferencesPreview.d.ts +6 -0
  316. package/dist/admin/src/preview/property_previews/ArrayOfRelationsPreview.d.ts +6 -0
  317. package/dist/admin/src/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +6 -0
  318. package/dist/admin/src/preview/property_previews/ArrayOfStringsPreview.d.ts +6 -0
  319. package/dist/admin/src/preview/property_previews/ArrayOneOfPreview.d.ts +6 -0
  320. package/dist/admin/src/preview/property_previews/ArrayPropertyEnumPreview.d.ts +6 -0
  321. package/dist/admin/src/preview/property_previews/ArrayPropertyPreview.d.ts +6 -0
  322. package/dist/admin/src/preview/property_previews/MapPropertyPreview.d.ts +9 -0
  323. package/dist/admin/src/preview/property_previews/NumberPropertyPreview.d.ts +7 -0
  324. package/dist/admin/src/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  325. package/dist/admin/src/preview/property_previews/StringPropertyPreview.d.ts +7 -0
  326. package/dist/admin/src/preview/util.d.ts +7 -0
  327. package/dist/admin/src/routes/CustomViewRoute.d.ts +4 -0
  328. package/dist/admin/src/routes/RebaseRoute.d.ts +1 -0
  329. package/dist/admin/src/routes/index.d.ts +2 -0
  330. package/dist/admin/src/types/components/EntityFormActionsProps.d.ts +19 -0
  331. package/dist/admin/src/types/components/EntityFormProps.d.ts +49 -0
  332. package/dist/admin/src/types/components/PropertyPreviewProps.d.ts +47 -0
  333. package/dist/admin/src/types/components/formex.d.ts +40 -0
  334. package/dist/admin/src/types/components/index.d.ts +3 -0
  335. package/dist/admin/src/types/fields.d.ts +221 -0
  336. package/dist/admin/src/types/index.d.ts +2 -0
  337. package/dist/admin/src/util/entity_actions.d.ts +2 -0
  338. package/dist/admin/src/util/index.d.ts +5 -0
  339. package/dist/admin/src/util/navigation_utils.d.ts +26 -0
  340. package/dist/admin/src/util/previews.d.ts +4 -0
  341. package/dist/admin/src/util/property_utils.d.ts +25 -0
  342. package/dist/admin/src/util/resolutions.d.ts +9 -0
  343. package/dist/common/src/collections/default-collections.d.ts +12 -0
  344. package/dist/common/src/collections/index.d.ts +1 -0
  345. package/dist/common/src/data/query_builder.d.ts +51 -0
  346. package/dist/common/src/index.d.ts +1 -0
  347. package/dist/common/src/util/permissions.d.ts +1 -0
  348. package/dist/core/src/components/LoginView/LoginView.d.ts +17 -1
  349. package/dist/core/src/components/common/types.d.ts +10 -7
  350. package/dist/core/src/components/common/useDebouncedData.d.ts +1 -1
  351. package/dist/core/src/core/RebaseProps.d.ts +13 -2
  352. package/dist/core/src/core/RebaseRouter.d.ts +1 -1
  353. package/dist/core/src/hooks/index.d.ts +0 -1
  354. package/dist/core/src/util/entity_cache.d.ts +0 -5
  355. package/dist/core/src/util/index.d.ts +0 -2
  356. package/dist/core/src/util/useStorageUploadController.d.ts +2 -2
  357. package/dist/formex/src/utils.d.ts +2 -2
  358. package/dist/index.es.js +7 -4
  359. package/dist/index.es.js.map +1 -1
  360. package/dist/index.umd.js +7 -4
  361. package/dist/index.umd.js.map +1 -1
  362. package/dist/plugin-data-enhancement/src/api.d.ts +2 -2
  363. package/dist/plugin-data-enhancement/src/components/DataEnhancementControllerProvider.d.ts +1 -1
  364. package/dist/plugin-data-enhancement/src/index.d.ts +0 -1
  365. package/dist/plugin-data-enhancement/src/utils/suggestions.d.ts +1 -1
  366. package/dist/types/src/controllers/auth.d.ts +2 -24
  367. package/dist/types/src/controllers/client.d.ts +0 -3
  368. package/dist/types/src/controllers/collection_registry.d.ts +1 -1
  369. package/dist/types/src/controllers/data.d.ts +21 -0
  370. package/dist/types/src/controllers/data_driver.d.ts +18 -0
  371. package/dist/types/src/controllers/registry.d.ts +5 -4
  372. package/dist/types/src/rebase_context.d.ts +1 -1
  373. package/dist/types/src/types/auth_adapter.d.ts +2 -4
  374. package/dist/types/src/types/collections.d.ts +0 -4
  375. package/dist/types/src/types/component_ref.d.ts +1 -1
  376. package/dist/types/src/types/cron.d.ts +1 -1
  377. package/dist/types/src/types/entity_views.d.ts +1 -0
  378. package/dist/types/src/types/export_import.d.ts +1 -1
  379. package/dist/types/src/types/formex.d.ts +2 -2
  380. package/dist/types/src/types/properties.d.ts +2 -2
  381. package/dist/types/src/types/translations.d.ts +28 -12
  382. package/dist/types/src/types/user_management_delegate.d.ts +6 -4
  383. package/dist/types/src/users/roles.d.ts +0 -8
  384. package/dist/ui/src/components/Button.d.ts +2 -2
  385. package/dist/ui/src/components/ErrorBoundary.d.ts +25 -3
  386. package/dist/ui/src/components/VirtualTable/VirtualTable.d.ts +1 -1
  387. package/dist/ui/src/components/VirtualTable/VirtualTableCell.d.ts +6 -6
  388. package/dist/ui/src/components/VirtualTable/VirtualTableHeader.d.ts +8 -8
  389. package/dist/ui/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +1 -1
  390. package/dist/ui/src/components/VirtualTable/VirtualTableProps.d.ts +11 -11
  391. package/dist/ui/src/components/VirtualTable/VirtualTableRow.d.ts +1 -1
  392. package/dist/ui/src/components/VirtualTable/types.d.ts +9 -9
  393. package/dist/ui/src/hooks/useDebounceCallback.d.ts +1 -1
  394. package/dist/ui/src/util/debounce.d.ts +1 -1
  395. package/package.json +12 -7
  396. package/src/api.ts +4 -4
  397. package/src/components/DataEnhancementControllerProvider.tsx +10 -7
  398. package/src/index.ts +0 -1
  399. package/src/tests/strings_counter.test.ts +101 -0
  400. package/src/tests/suggestions.test.ts +53 -0
  401. package/src/tests/values.test.ts +83 -0
  402. package/src/utils/properties.ts +3 -3
  403. package/src/utils/suggestions.ts +1 -1
  404. package/dist/core/src/hooks/useValidateAuthenticator.d.ts +0 -21
  405. package/dist/core/src/util/icon_synonyms.d.ts +0 -1
  406. package/dist/core/src/util/useTraceUpdate.d.ts +0 -2
  407. package/dist/plugin-data-enhancement/src/types/subscriptions_message_props.d.ts +0 -3
  408. package/src/types/subscriptions_message_props.tsx +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/utils/values.ts","../src/api.ts","../src/utils/suggestions.ts","../src/utils/properties.ts","../src/editor/useEditorAIController.tsx","../src/components/DataEnhancementControllerProvider.tsx","../src/components/FormEnhanceAction.tsx","../src/useDataEnhancementPlugin.tsx"],"sourcesContent":["export function flatMapEntityValues<M extends object>(values: M, path = \"\"): object {\n if (!values) return {};\n return Object.entries(values).flatMap(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n if (typeof value === \"object\") {\n return flatMapEntityValues(value, currentPath);\n } else {\n return { [currentPath]: value };\n }\n }).reduce((acc, curr) => ({ ...acc,\n...curr }), {})\n}\n","import {\n DataEnhancementRequest,\n EnhancedDataResult,\n InputEntity,\n InputProperty,\n SamplePromptsResult\n} from \"./types/data_enhancement_controller\";\nimport { EntityValues } from \"@rebasepro/types\";\nimport { flatMapEntityValues } from \"./utils/values\";\n\n// const DEFAULT_SERVER = \"http://localhost:5001/rebase-dev-2da42/europe-west3/api\"; // Local\n\nconst DEFAULT_SERVER = \"https://api.rebase.pro\";\n\nexport async function enhanceDataAPIStream<M extends Record<string, unknown>>(props: {\n apiKey: string,\n entityId?: string | number,\n entityName: string,\n entityDescription?: string,\n propertyKey?: string,\n propertyInstructions?: string;\n values: EntityValues<M>,\n path: string,\n properties: Record<string, InputProperty>,\n\n instructions?: string,\n firebaseToken: string,\n onUpdate: (suggestions: Record<string, any>) => void;\n onUpdateDelta: (propertyKey: string, partialValue: any) => void;\n onError: (error: Error) => void;\n onEnd: (result: EnhancedDataResult) => void;\n host?: string;\n}) {\n\n const flatValues = flatMapEntityValues(props.values);\n\n const properties = props.properties;\n\n const inputEntity: InputEntity = {\n entityId: props.entityId,\n values: flatValues\n }\n\n const request: DataEnhancementRequest = {\n inputEntity,\n properties,\n entityName: props.entityName,\n entityDescription: props.entityDescription,\n propertyKey: props.propertyKey,\n propertyInstructions: props.propertyInstructions,\n instructions: props.instructions\n };\n\n console.debug(\"enhanceDataAPIStream\", request);\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/enhance_stream/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n // \"x-de-version\": version\n },\n body: JSON.stringify(request)\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n try {\n str.split(\"&$# \").forEach((s) => {\n if (s && s.length > 0) {\n const data = JSON.parse(s.trim());\n if (data.type === \"suggestion_delta\")\n props.onUpdateDelta(data.data.propertyKey, data.data.partialValue);\n else if (data.type === \"suggestion\")\n props.onUpdate(data.data);\n else if (data.type === \"result\")\n props.onEnd(data.data);\n }\n });\n } catch (e: any) {\n console.error(\"str\", str);\n console.error(\"Error parsing stream\", e);\n props.onError(e);\n }\n }\n\n });\n\n}\n\nfunction readChunks(reader: ReadableStreamDefaultReader) {\n return {\n async *[Symbol.asyncIterator]() {\n let readResult = await reader.read();\n while (!readResult.done) {\n yield readResult.value;\n readResult = await reader.read();\n }\n }\n };\n}\n\nexport async function fetchEntityPromptSuggestion<M extends object>(props: {\n input?: string,\n entityName: string,\n firebaseToken: string,\n apiKey: string,\n host?: string\n}): Promise<SamplePromptsResult> {\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/prompt_autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n },\n body: JSON.stringify({\n entityName: props.entityName,\n input: props.input ?? null\n })\n })\n .then(async (res) => {\n const data = await res.json();\n if (!res.ok) {\n console.error(\"fetchEntityPromptSuggestion\", data);\n throw Error(data.message);\n }\n return {\n prompts: data.data.prompts.map((e: string) => ({\n prompt: e,\n type: \"sample\"\n }))\n };\n });\n\n}\n\nexport async function autocompleteStream(props: {\n firebaseToken: string,\n textBefore?: string,\n textAfter: string,\n host?: string;\n onUpdate: (delta: string) => void;\n}) {\n\n let result = \"\";\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`\n // \"x-de-version\": version\n },\n body: JSON.stringify({\n textBefore: props.textBefore,\n textAfter: props.textAfter\n })\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n result += str;\n console.debug(\"Autocomplete update:\", str);\n props.onUpdate(str);\n }\n\n }).then(() => {\n console.debug(\"Autocomplete result:\", result);\n return result;\n });\n\n}\n","export function getAppendableSuggestion(suggestion: string | number | undefined, value: any): string | undefined {\n const suggestionIncludesValue = typeof suggestion === \"string\" && typeof value === \"string\" && suggestion.toLowerCase().trim().startsWith(value.toLowerCase().trim());\n return (typeof value === \"string\" && suggestionIncludesValue)\n ? suggestion.substring(suggestion.toLowerCase().trim().indexOf(value.toLowerCase().trim()) + value.trim().length)\n : undefined;\n}\n","import { getFieldId } from \"@rebasepro/admin\";\nimport { EnumValues, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder } from \"@rebasepro/common\";\nimport { InputProperty } from \"../types/data_enhancement_controller\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport function getSimplifiedProperties<M extends Record<string, any>>(properties: Properties, values: M, path = \"\"): Record<string, InputProperty> {\n if (!properties) return {};\n return Object.entries(properties)\n .map(([key, property]) => {\n if (isPropertyBuilder(property)) return {};\n const fullKey = path ? `${path}.${key}` : key;\n const valueInPath = getValueInPath(values, fullKey);\n return getSimplifiedProperty(property, fullKey, valueInPath)\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleProperty(property: Property): InputProperty {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.error(\"No fieldId found for property\", property);\n throw new Error(\"Field id not found\");\n }\n return {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: fieldId,\n enum: \"enum\" in property && property.enum\n ? getSimpleEnumValues(property.enum)\n : undefined,\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n}\n\nfunction getSimplifiedProperty(property: Property, path: string, value?: any): Record<string, InputProperty> {\n if (isPropertyBuilder(property)) return {};\n if (property.type === \"array\") {\n\n if (property.of && !Array.isArray(property.of) && !isPropertyBuilder(property.of)) {\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"repeat\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n of: getSimpleProperty(property.of as Property)\n };\n\n const result = { [path]: arrayParentProperty };\n // if (Array.isArray(value)) {\n // result = {\n // ...result,\n // ...value\n // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i}`, v))\n // .reduce((a, b) => ({ ...a, ...b }), {})\n // };\n // }\n //\n // const existingValuesCount = Array.isArray(value) ? value.length : 0;\n //\n // const newValuesCount = property.of && !isPropertyBuilder<any, any>(property.of) && (property.of as Property).type === \"map\" ? 1 : 3;\n // result = {\n // ...result,\n // // ...Array.from(Array(newValuesCount))\n // // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i + existingValuesCount}`, v))\n // // .reduce((a, b) => ({ ...a, ...b }), {})\n // }\n\n return result;\n } else if (property.oneOf) {\n\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"block\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n oneOf: {\n typeField: property.oneOf.typeField,\n valueField: property.oneOf.valueField,\n properties: Object.entries(property.oneOf.properties)\n .map(([key, prop]) => ({ [key]: getSimpleProperty(prop) }))\n .reduce((a, b) => ({ ...a,\n...b }), {})\n }\n };\n\n if (!Array.isArray(value)) {\n return { [path]: arrayParentProperty };\n }\n\n return value.map((v, i) => {\n if (v == null) return {};\n const typeKey = property.oneOf!.typeField ?? \"type\";\n const oneOfType = v[typeKey];\n const valueKey = property.oneOf!.valueField ?? \"value\";\n const oneOfValue = v[valueKey];\n const childProperty = property.oneOf!.properties[oneOfType];\n if (childProperty === undefined) {\n console.error(`No property found for type ${oneOfType}`, property.oneOf!.properties);\n return {};\n }\n const simplifiedProperty = getSimplifiedProperty(childProperty, `${path}.${i}.${valueKey}`, oneOfValue);\n return {\n [`${path}.${i}.${typeKey}`]: oneOfType,\n ...simplifiedProperty\n };\n }).reduce((a, b) => ({ ...a,\n...b }), { [path]: arrayParentProperty });\n }\n } else if (property.type === \"map\") {\n if (property.properties) {\n const mapProperties: Record<string, InputProperty> = Object.entries(property.properties)\n .map(([key, childProperty]) => {\n const childValue = value?.[key];\n return getSimplifiedProperty(childProperty, key, childValue);\n })\n .map(o => attachPathToKeys(o, path))\n .reduce((a, b) => ({ ...a,\n...b }), {});\n\n if (Object.keys(mapProperties).length === 0) return {};\n const mapParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"group\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n return {\n [path]: mapParentProperty,\n ...mapProperties\n } as Record<string, InputProperty>;\n }\n } else {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.warn(`No fieldId found for property ${path} with type ${property.type}`);\n return {};\n }\n return {\n [path]: getSimpleProperty(property)\n };\n }\n return {};\n}\n\n// attach a path to every key in an object\nfunction attachPathToKeys(obj: Record<string, any>, path = \"\"): Record<string, any> {\n return Object.entries(obj)\n .map(([key, value]) => {\n const fullKey = path ? `${path}.${key}` : key;\n return { [fullKey]: value };\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleEnumValues(enumValues: EnumValues): string[] {\n if (Array.isArray(enumValues))\n return enumValues.map(v => String(v.id));\n if (typeof enumValues === \"object\")\n return Object.keys(enumValues);\n throw Error(\"getSimpleEnumValues: Invalid enumValues\");\n}\n","import { autocompleteStream } from \"../api\";\nimport { EditorAIController } from \"@rebasepro/admin\";\n\nexport function useEditorAIController({ getAuthToken }: { getAuthToken?: () => Promise<string> }): EditorAIController {\n const autocomplete = async (textBefore: string, textAfter: string, onUpdate: (delta: string) => void) => {\n if (!getAuthToken) {\n throw new Error(\"Firebase token is required\");\n }\n const firebaseToken = await getAuthToken();\n return autocompleteStream({\n firebaseToken,\n textBefore,\n textAfter,\n onUpdate\n });\n }\n\n return {\n autocomplete\n };\n}\n\n// async function * generateLoremIpsum(): AsyncGenerator<string> {\n// const loremIpsum = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\n# Heading\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\";\n//\n// const words = loremIpsum.split(\" \");\n//\n// for (const word of words) {\n// yield word;\n// await new Promise(resolve => setTimeout(resolve, 100));\n// }\n// }\n//\n// const generator = generateLoremIpsum();\n// for await (const word of generator) {\n//\n// }\n","import React, { PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n DataEnhancementController,\n EnhancedDataResult,\n EnhanceParams,\n InputProperty\n} from \"../types/data_enhancement_controller\";\nimport {\n useAuthController,\n useCustomizationController,\n useSnackbarController\n} from \"@rebasepro/core\";\nimport { useUrlController } from \"@rebasepro/admin\";\nimport { DataDriver, Entity, EntityCollection, PluginFormActionProps } from \"@rebasepro/types\";\nimport { enhanceDataAPIStream, fetchEntityPromptSuggestion } from \"../api\";\nimport { getAppendableSuggestion } from \"../utils/suggestions\";\nimport { getSimplifiedProperties } from \"../utils/properties\";\nimport { useEditorAIController } from \"../editor/useEditorAIController\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport const DataEnhancementControllerContext = React.createContext<DataEnhancementController>(null! as DataEnhancementController);\n\nexport type DataEnhancementControllerProviderProps = {\n\n apiKey: string;\n\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection\n }) => boolean;\n\n host?: string;\n}\n\nexport const useDataEnhancementController = (): DataEnhancementController => useContext(DataEnhancementControllerContext);\n\nfunction getPropertyFromKey(properties: Record<string, InputProperty>, propertyKey: string) {\n if (propertyKey in properties) {\n return properties[propertyKey];\n } else {\n //split the property key\n const split = propertyKey.split(\".\");\n if (split.length === 1) {\n return undefined;\n }\n const parentKey = split.slice(0, split.length - 1).join(\".\");\n return getPropertyFromKey(properties, parentKey);\n\n }\n}\n\nexport function DataEnhancementControllerProvider({\n apiKey,\n getConfigForPath,\n children,\n host,\n path,\n collection,\n formContext\n}: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps<any>>) {\n\n const [enabled, setEnabled] = useState(false);\n const [suggestions, setSuggestions] = useState<Record<string, string | number>>({});\n const [loadingSuggestions, setLoadingSuggestions] = useState<string[]>([]);\n\n const enhancingInProgress = useRef(false);\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n\n const properties = useMemo(() => getSimplifiedProperties(collection.properties, formContext?.values ?? {}), [formContext?.values]);\n // const preEnhanceValuesRef = React.useRef(formContext?.values ?? {});\n const valuesRef = React.useRef(formContext?.values ?? {});\n useEffect(() => {\n if (!enhancingInProgress.current)\n valuesRef.current = formContext?.values ?? {};\n }, [formContext?.values]);\n\n const allowReferenceDataSelection = false;\n\n const updateConfig = useCallback(async () => {\n if (!getConfigForPath) return;\n const config = getConfigForPath({\n path,\n collection\n });\n if (config) {\n setEnabled(true);\n }\n }, [collection, getConfigForPath, path]);\n\n useEffect(() => {\n if (!getConfigForPath) {\n setEnabled(true);\n } else {\n updateConfig();\n }\n\n }, [getConfigForPath, updateConfig]);\n\n\n const urlController = useUrlController();\n\n const clearSuggestion = useCallback((propertyKey: string) => {\n setSuggestions((prev) => {\n //remove propertyKey from prev\n const {\n [propertyKey]: _,\n ...rest\n } = prev;\n return rest;\n });\n }, []);\n\n const appendValueDelta = useCallback((propertyKey: string, delta: string) => {\n\n const property = getPropertyFromKey(properties, propertyKey);\n if (delta === null || property?.disabled) {\n return;\n }\n\n // clearSuggestion(propertyKey);\n const value = getValueInPath(valuesRef.current, propertyKey);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n const updatedValue = currentValue + delta;\n // if (currentValue.length === 0) updatedValue = updatedValue.trimStart();\n valuesRef.current = {\n ...valuesRef.current,\n [propertyKey]: updatedValue\n };\n formContext?.setFieldValue(propertyKey, updatedValue, false);\n setSuggestions(prev => ({\n ...prev,\n [propertyKey]: (prev[propertyKey] ?? \"\") + delta\n }));\n }, [properties, formContext]);\n\n const updateSuggestedValues = useCallback((currentValues: object, updatedValues: Record<string, string | number>, replaceValues: boolean) => {\n\n setLoadingSuggestions((prev) => {\n return prev.filter(p => !Object.keys(updatedValues).includes(p));\n });\n\n Object.entries(updatedValues).forEach(([propertyKey, suggestion]) => {\n\n const value = getValueInPath(currentValues, propertyKey);\n const property = getPropertyFromKey(properties, propertyKey);\n\n if (!property || suggestion === null || property?.disabled) {\n return;\n }\n\n if (typeof suggestion === \"number\") {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n if (replaceValues) {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n const appendableValue = getAppendableSuggestion(suggestion, value);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n if (appendableValue) {\n formContext?.setFieldValue(propertyKey, suggestion);\n } else {\n const multiline = property?.fieldConfigId === \"multiline\" || property?.fieldConfigId === \"markdown\";\n const trimmedValue = currentValue.trimEnd();\n if (multiline && (trimmedValue.endsWith(\".\") || trimmedValue.endsWith(\"?\") || trimmedValue.endsWith(\"!\") || trimmedValue.endsWith(\":\"))) {\n formContext?.setFieldValue(propertyKey, trimmedValue + \"\\n\\n\" + (suggestion as string).trimStart());\n } else {\n formContext?.setFieldValue(propertyKey, trimmedValue + (trimmedValue.length > 0 ? \" \" : \"\") + (suggestion as string));\n }\n }\n });\n\n setSuggestions(prev => ({\n ...prev,\n ...Object.keys(updatedValues)\n .reduce((acc, key) => {\n const value = getValueInPath(formContext?.values, key);\n const suggestion = updatedValues[key];\n return {\n ...acc,\n [key]: getAppendableSuggestion(suggestion, value) ?? suggestion\n };\n }, {})\n }));\n }, [properties, formContext]);\n\n const displayNeededSubscriptionSnackbar = useCallback((projectId: any) => {\n snackbarController.open({\n type: \"warning\",\n message: \"A valid subscription is needed in order to use this function.\",\n autoHideDuration: 4000\n });\n }, [snackbarController]);\n\n const editorAIController = useEditorAIController({ getAuthToken: authController.getAuthToken });\n\n const clearAllSuggestions = useCallback(() => {\n setSuggestions({});\n }, []);\n\n const enhance = useCallback(async (props: EnhanceParams<any>): Promise<EnhancedDataResult | null> => {\n\n if (!authController.user) {\n snackbarController.open({\n type: \"warning\",\n message: \"You need to be logged in to enhance data\"\n });\n return Promise.reject(new Error(\"Not logged in\"));\n }\n\n const resolvedPath = urlController.resolveDatabasePathsFrom(path);\n const firebaseToken = await authController.getAuthToken();\n\n if (props.propertyKey) {\n clearSuggestion(props.propertyKey)\n } else {\n clearAllSuggestions();\n }\n\n setLoadingSuggestions((prev) => [...prev, ...(props.propertyKey ? [props.propertyKey] : Object.keys(properties))]);\n enhancingInProgress.current = true;\n\n const currentValues = valuesRef.current ?? {};\n\n return new Promise((resolve, reject) => {\n function onError(e: any) {\n setLoadingSuggestions([]);\n if (e.code === \"payment-required\") {\n const projectId = e.data.projectId;\n displayNeededSubscriptionSnackbar(projectId);\n } else {\n console.error(\"Enhance error\", e);\n }\n reject(e);\n enhancingInProgress.current = false;\n }\n\n try {\n enhanceDataAPIStream({\n ...props,\n host,\n apiKey,\n properties,\n path: resolvedPath,\n entityName: collection.singularName ?? collection.name,\n entityDescription: collection.description,\n\n firebaseToken,\n onUpdate: (suggestions) => {\n console.debug(\"de onUpdate\", suggestions);\n updateSuggestedValues(currentValues, suggestions, props.replaceValues ?? false);\n },\n onUpdateDelta: (propertyKey: string, partialValue: string) => {\n // console.debug(\"de delta\", propertyKey, partialValue);\n appendValueDelta(propertyKey, partialValue);\n },\n onError,\n onEnd: (result) => {\n console.debug(\"de onEnd\", result);\n if (result.errors) {\n result.errors.forEach((error) => {\n snackbarController.open({\n type: \"warning\",\n message: error\n })\n });\n }\n if (Object.keys(result.suggestions).length === 0) {\n snackbarController.open({\n type: \"info\",\n autoHideDuration: 1800,\n message: \"No fields were updated\"\n })\n }\n setLoadingSuggestions([]);\n resolve(result);\n enhancingInProgress.current = false;\n }\n }).catch(onError);\n } catch (e: any) {\n onError(e);\n }\n });\n }, [\n authController, urlController, path, clearSuggestion, clearAllSuggestions,\n properties, host, apiKey, collection, updateSuggestedValues, appendValueDelta, displayNeededSubscriptionSnackbar, snackbarController\n ]);\n\n const getSamplePrompts = useCallback(async (entityName: string, input?: string) => {\n const firebaseToken = await authController.getAuthToken()\n return fetchEntityPromptSuggestion({\n host,\n entityName,\n firebaseToken,\n apiKey,\n input\n });\n }, [apiKey, authController.getAuthToken, host]);\n\n const dataEnhancementController: DataEnhancementController = useMemo(() => ({\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n }), [\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n ]);\n\n return (\n <DataEnhancementControllerContext.Provider\n value={dataEnhancementController}>\n {children}\n </DataEnhancementControllerContext.Provider>\n );\n}\n\n\n","\nimport React, { useCallback, useDeferredValue, useEffect, useRef } from \"react\";\n\nimport {\n Button,\n CircularProgress,\n cls,\n focusedDisabled,\n IconButton,\n iconSize,\n Menu,\n MenuItem,\n SendIcon,\n Separator,\n TextareaAutosize,\n XIcon\n} from \"@rebasepro/ui\";\nimport {\n AIIcon,\n useLargeLayout\n} from \"@rebasepro/core\";\nimport { EntityStatus, PluginFormActionProps, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder, stripCollectionPath } from \"@rebasepro/common\";\nimport { useDataEnhancementController } from \"./DataEnhancementControllerProvider\";\nimport { SamplePrompt } from \"../types/data_enhancement_controller\";\n\nexport function FormEnhanceAction({\n entityId,\n path,\n status,\n collection,\n formContext,\n openEntityMode\n}: PluginFormActionProps) {\n\n const largeLayout = useLargeLayout();\n\n const storageKey = createLocalStorageKey(path, status);\n\n const [loading, setLoading] = React.useState(false);\n const dataEnhancementController = useDataEnhancementController();\n\n const [samplePrompts, setSamplePrompts] = React.useState<SamplePrompt[] | undefined>(undefined);\n const [instructions, setInstructions] = React.useState<string>(\"\");\n\n const getSamplePrompts = dataEnhancementController?.getSamplePrompts;\n\n const loadingPrompts = useRef(false);\n const updateSuggestedPrompts = useCallback(async function updateSuggestedPrompts(instructions?: string) {\n if (!getSamplePrompts) return;\n if (loadingPrompts.current) return;\n loadingPrompts.current = true;\n const prompts = status === \"new\"\n ? (await getSamplePrompts(collection.singularName ?? collection.name, instructions)).prompts\n : getPromptsForExistingEntities(collection.properties);\n\n const recentPromptsFromStorage = getRecentPromptsFromStorage(storageKey);\n const recentPrompts = recentPromptsFromStorage.map(prompt => prompt.prompt);\n setSamplePrompts([...recentPromptsFromStorage, ...prompts.filter(p => !recentPrompts.includes(p.prompt))].slice(0, 5));\n loadingPrompts.current = false;\n },\n [collection.name, collection.singularName, getSamplePrompts, status]);\n\n const deferredValues = useDeferredValue(formContext?.values);\n // const enoughData = countStringCharacters(deferredValues, collection.properties) > 20;\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n if (!samplePrompts) {\n setSamplePrompts(getRecentPromptsFromStorage(storageKey));\n updateSuggestedPrompts().then();\n }\n }, [dataEnhancementController, samplePrompts, storageKey, updateSuggestedPrompts, instructions, status]);\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n updateSuggestedPrompts().then();\n }, [dataEnhancementController, status]);\n\n const enhance = (prompt?: string) => {\n if (!dataEnhancementController || !formContext?.values) return;\n setLoading(true);\n if (prompt) {\n addRecentPrompt(storageKey, prompt);\n setSamplePrompts([{\n prompt,\n type: \"recent\"\n }, ...(samplePrompts ?? []).slice(0, 5)]);\n }\n return dataEnhancementController.enhance({\n entityId,\n values: formContext!.values,\n instructions: prompt,\n replaceValues: true\n }).finally(() => {\n setLoading(false);\n });\n };\n\n if (!dataEnhancementController?.enabled)\n return null;\n\n const suggestions = dataEnhancementController.suggestions;\n const hasSuggestions = Object.values(suggestions).filter(Boolean).length > 0;\n\n const disabledSuggestionActions = !hasSuggestions;\n const promptSuggestionsEnabled = (samplePrompts ?? []).length > 0 && instructions.length === 0;\n\n // const noIdSet = !formContext?.entityId;\n\n function submit() {\n enhance(instructions);\n }\n\n return (\n <Menu\n align={\"end\"}\n sideOffset={8}\n className={\"max-w-[100vw]\"}\n trigger={<Button variant={\"filled\"}\n color={\"neutral\"}\n fullWidth={largeLayout && openEntityMode === \"full_screen\"}\n size={\"small\"}\n disabled={loading}>\n {!loading && <AIIcon size={\"small\"}/>}\n {loading && <CircularProgress size={\"small\"}/>}\n Autofill\n </Button>}>\n\n <MenuItem className={\"py-4\"}\n onClick={() => {\n enhance();\n }}>\n <AIIcon size={\"small\"}/>\n Autofill based on the current content\n </MenuItem>\n\n <Separator orientation={\"horizontal\"} className={\"mt-2\"}/>\n\n {samplePrompts?.map((samplePrompt, index) => {\n return <MenuItem\n key={index + \"_\" + samplePrompt.prompt}\n onClick={() => {\n setInstructions(samplePrompt.prompt);\n enhance(samplePrompt.prompt);\n }}\n >\n <div className={\"pl-9 grow text-text-secondary dark:text-text-secondary-dark\"}>\n {samplePrompt.prompt}\n </div>\n\n {samplePrompt.type === \"recent\" && <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeRecentPrompt(storageKey, samplePrompt.prompt);\n setSamplePrompts((samplePrompts ?? []).filter(p => p.prompt !== samplePrompt.prompt));\n }}\n size={\"smallest\"}\n >\n <XIcon size={iconSize.smallest}/>\n </IconButton>\n }\n </MenuItem>;\n })}\n\n <Separator orientation={\"horizontal\"}/>\n\n <div\n className={cls(\n \"my-2 w-[500px] max-w-full flex items-start text-surface-700 dark:text-surface-200\"\n )}>\n\n <TextareaAutosize\n className={cls(\"p-4 rounded-lg resize-none bg-surface-100 dark:bg-surface-950 mx-2 w-full grow outline-hidden max-h-[300px] overflow-auto\", focusedDisabled)}\n value={instructions}\n autoFocus={status === \"new\"}\n disabled={loading}\n onFocus={(event) => {\n event.stopPropagation();\n }}\n placeholder={\"...or provide instructions\"}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n submit();\n }\n\n }}\n onChange={(e) => {\n setInstructions(e.target.value);\n }}\n />\n\n <IconButton\n size={\"small\"}\n onClick={() => {\n setInstructions(\"\");\n }}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n <XIcon size={iconSize.small}/>\n </IconButton>\n\n <IconButton\n onClick={() => enhance(instructions)}\n size={\"small\"}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n {loading &&\n <CircularProgress size={\"smallest\"}/>}\n {!loading &&\n <SendIcon color={\"primary\"}/>}\n </IconButton>\n\n </div>\n\n </Menu>\n );\n}\n\nexport interface EnhanceDialogProps {\n open: boolean;\n onClose: () => void;\n selectReferences: () => void;\n loading: boolean;\n enhance: (instructions: string) => void;\n samplePrompts?: string[];\n}\n\nfunction getPromptsForExistingEntities(properties: Properties): SamplePrompt[] {\n\n const multilineProperties = Object.values(properties).filter((p: Property) => {\n if (isPropertyBuilder(p)) {\n return false;\n }\n return p.type === \"string\" && (p.ui?.markdown || p.ui?.multiline);\n });\n\n const multilinePrompt: Property | undefined = multilineProperties.length > 0\n ? multilineProperties[Math.floor(Math.random() * multilineProperties.length)] as Property\n : undefined;\n\n const prompts = [\n \"Fill the missing fields\",\n \"Translate the missing content\"\n ];\n if (multilinePrompt) {\n prompts.push(`Add 2 paragraphs to '${multilinePrompt.name}'`);\n }\n return prompts.map(p => ({\n prompt: p,\n type: \"sample\"\n }));\n}\n\nconst createLocalStorageKey = (path: string, status: EntityStatus) => {\n const statusString = status === \"new\" ? \"new\" : \"existing\";\n return `data_enhancement::${statusString}::${stripCollectionPath(path)}`;\n};\n\nconst getRecentPromptsFromStorage = (storageKey: string): SamplePrompt[] => {\n const item = localStorage.getItem(storageKey);\n return item ? JSON.parse(item).map((e: string) => ({\n prompt: e,\n type: \"recent\"\n })) : [];\n};\n\nconst addRecentPrompt = (storageKey: string, prompt: string) => {\n if (!prompt || prompt.trim().length === 0) {\n return;\n }\n const recentPrompts = getRecentPromptsFromStorage(storageKey);\n localStorage.setItem(storageKey, JSON.stringify([prompt, ...recentPrompts\n .map(e => e.prompt)\n .filter(e => e !== prompt)\n .slice(0, 5)]));\n};\n\nconst removeRecentPrompt = (storageKey: string, prompt: string) => {\n localStorage.setItem(storageKey, JSON.stringify(getRecentPromptsFromStorage(storageKey)\n .map(e => e.prompt)\n .filter(e => e !== prompt)));\n};\n","import React from \"react\";\n\nimport { EntityCollection, RebasePlugin, User } from \"@rebasepro/types\";\nimport { DataEnhancementControllerProvider } from \"./components/DataEnhancementControllerProvider\";\nimport { FormEnhanceAction } from \"./components/FormEnhanceAction\";\n\nconst DEFAULT_API_KEY = \"fcms-U9jdDii0xXWSDC34asfrf54lbkFJBfKfRWcEDEwdc4V5wDWEDF\";\n\nexport interface DataEnhancementPluginProps {\n\n apiKey?: string;\n\n /**\n * Use this function to determine if the data enhancement plugin should be enabled for a given path.\n * If this function is not provided, the plugin will be enabled for all paths.\n * If the function returns false, the plugin will be disabled for the given path.\n * You can also return a configuration object to override the default configuration.\n *\n * @param path\n * @param collection\n */\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection,\n user: User | null\n }) => boolean;\n\n /**\n * Host to use for the data enhancement API.\n * This prop is only use in development mode.\n */\n host?: string;\n}\n\n/**\n * Use this hook to initialise the data enhancement plugin.\n * This is likely the only hook you will need to use.\n * @param props\n */\nexport function useDataEnhancementPlugin(props?: DataEnhancementPluginProps): RebasePlugin {\n\n const apiKey = props?.apiKey ?? DEFAULT_API_KEY;\n const getConfigForPath = props?.getConfigForPath;\n\n return React.useMemo(() => ({\n key: \"data_enhancement\",\n slots: [\n {\n slot: \"form.actions\",\n Component: FormEnhanceAction,\n order: 40\n }\n ],\n providers: [\n {\n scope: \"form\" as const,\n Component: DataEnhancementControllerProvider as React.ComponentType<any>,\n props: {\n apiKey,\n getConfigForPath,\n host: props?.host\n }\n }\n ]\n }), [apiKey, getConfigForPath, props?.host]);\n}\n"],"names":["flatMapEntityValues","values","path","Object","entries","flatMap","key","value","currentPath","reduce","acc","curr","DEFAULT_SERVER","enhanceDataAPIStream","props","flatValues","properties","inputEntity","entityId","request","entityName","entityDescription","propertyKey","propertyInstructions","instructions","console","debug","fetch","host","method","headers","Authorization","firebaseToken","apiKey","body","JSON","stringify","then","res","ok","error","json","reader","getReader","Error","chunk","readChunks","str","TextDecoder","decode","split","forEach","s","length","data","parse","trim","type","onUpdateDelta","partialValue","onUpdate","onEnd","e","onError","Symbol","asyncIterator","readResult","read","done","fetchEntityPromptSuggestion","input","message","prompts","map","prompt","autocompleteStream","result","textBefore","textAfter","getAppendableSuggestion","suggestion","suggestionIncludesValue","toLowerCase","startsWith","substring","indexOf","undefined","getSimplifiedProperties","property","isPropertyBuilder","fullKey","valueInPath","getValueInPath","getSimplifiedProperty","a","b","getSimpleProperty","fieldId","getFieldId","name","description","fieldConfigId","enum","getSimpleEnumValues","disabled","Boolean","ui","readOnly","of","Array","isArray","arrayParentProperty","oneOf","typeField","valueField","prop","v","i","typeKey","oneOfType","valueKey","oneOfValue","childProperty","simplifiedProperty","mapProperties","childValue","o","attachPathToKeys","keys","mapParentProperty","warn","obj","enumValues","String","id","useEditorAIController","getAuthToken","autocomplete","DataEnhancementControllerContext","React","createContext","useDataEnhancementController","useContext","getPropertyFromKey","parentKey","slice","join","DataEnhancementControllerProvider","getConfigForPath","children","collection","formContext","enabled","setEnabled","useState","suggestions","setSuggestions","loadingSuggestions","setLoadingSuggestions","enhancingInProgress","useRef","authController","useAuthController","snackbarController","useSnackbarController","useMemo","valuesRef","useEffect","current","allowReferenceDataSelection","updateConfig","useCallback","config","urlController","useUrlController","clearSuggestion","prev","_","rest","appendValueDelta","delta","currentValue","updatedValue","setFieldValue","updateSuggestedValues","currentValues","updatedValues","replaceValues","filter","p","includes","appendableValue","multiline","trimmedValue","trimEnd","endsWith","trimStart","displayNeededSubscriptionSnackbar","projectId","open","autoHideDuration","editorAIController","clearAllSuggestions","enhance","user","Promise","reject","resolvedPath","resolveDatabasePathsFrom","resolve","code","singularName","errors","catch","getSamplePrompts","dataEnhancementController","FormEnhanceAction","status","openEntityMode","largeLayout","useLargeLayout","storageKey","createLocalStorageKey","loading","setLoading","samplePrompts","setSamplePrompts","setInstructions","loadingPrompts","updateSuggestedPrompts","getPromptsForExistingEntities","recentPromptsFromStorage","getRecentPromptsFromStorage","recentPrompts","useDeferredValue","addRecentPrompt","finally","submit","jsxs","Menu","Button","jsx","AIIcon","CircularProgress","MenuItem","Separator","samplePrompt","index","IconButton","preventDefault","stopPropagation","removeRecentPrompt","XIcon","iconSize","smallest","cls","TextareaAutosize","focusedDisabled","event","shiftKey","target","small","SendIcon","multilineProperties","markdown","multilinePrompt","Math","floor","random","push","statusString","stripCollectionPath","item","localStorage","getItem","setItem","DEFAULT_API_KEY","useDataEnhancementPlugin","$","_c","t0","t1","for","slot","Component","order","t2","t3","slots","providers","scope"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/utils/values.ts","../src/api.ts","../src/utils/suggestions.ts","../src/utils/properties.ts","../src/editor/useEditorAIController.tsx","../src/components/DataEnhancementControllerProvider.tsx","../src/components/FormEnhanceAction.tsx","../src/useDataEnhancementPlugin.tsx"],"sourcesContent":["export function flatMapEntityValues<M extends object>(values: M, path = \"\"): object {\n if (!values) return {};\n return Object.entries(values).flatMap(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n if (typeof value === \"object\") {\n return flatMapEntityValues(value, currentPath);\n } else {\n return { [currentPath]: value };\n }\n }).reduce((acc, curr) => ({ ...acc,\n...curr }), {})\n}\n","import {\n DataEnhancementRequest,\n EnhancedDataResult,\n InputEntity,\n InputProperty,\n SamplePromptsResult\n} from \"./types/data_enhancement_controller\";\nimport { EntityValues } from \"@rebasepro/types\";\nimport { flatMapEntityValues } from \"./utils/values\";\n\n// const DEFAULT_SERVER = \"http://localhost:5001/rebase-dev-2da42/europe-west3/api\"; // Local\n\nconst DEFAULT_SERVER = \"https://api.rebase.pro\";\n\nexport async function enhanceDataAPIStream<M extends Record<string, unknown>>(props: {\n apiKey: string,\n entityId?: string | number,\n entityName: string,\n entityDescription?: string,\n propertyKey?: string,\n propertyInstructions?: string;\n values: EntityValues<M>,\n path: string,\n properties: Record<string, InputProperty>,\n\n instructions?: string,\n firebaseToken: string,\n onUpdate: (suggestions: Record<string, string | number>) => void;\n onUpdateDelta: (propertyKey: string, partialValue: string) => void;\n onError: (error: Error) => void;\n onEnd: (result: EnhancedDataResult) => void;\n host?: string;\n}) {\n\n const flatValues = flatMapEntityValues(props.values);\n\n const properties = props.properties;\n\n const inputEntity: InputEntity = {\n entityId: props.entityId,\n values: flatValues\n }\n\n const request: DataEnhancementRequest = {\n inputEntity,\n properties,\n entityName: props.entityName,\n entityDescription: props.entityDescription,\n propertyKey: props.propertyKey,\n propertyInstructions: props.propertyInstructions,\n instructions: props.instructions\n };\n\n console.debug(\"enhanceDataAPIStream\", request);\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/enhance_stream/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n // \"x-de-version\": version\n },\n body: JSON.stringify(request)\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n try {\n str.split(\"&$# \").forEach((s) => {\n if (s && s.length > 0) {\n const data = JSON.parse(s.trim());\n if (data.type === \"suggestion_delta\")\n props.onUpdateDelta(data.data.propertyKey, data.data.partialValue);\n else if (data.type === \"suggestion\")\n props.onUpdate(data.data);\n else if (data.type === \"result\")\n props.onEnd(data.data);\n }\n });\n } catch (e: unknown) {\n console.error(\"str\", str);\n console.error(\"Error parsing stream\", e);\n props.onError(e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n });\n\n}\n\nfunction readChunks(reader: ReadableStreamDefaultReader) {\n return {\n async *[Symbol.asyncIterator]() {\n let readResult = await reader.read();\n while (!readResult.done) {\n yield readResult.value;\n readResult = await reader.read();\n }\n }\n };\n}\n\nexport async function fetchEntityPromptSuggestion<M extends object>(props: {\n input?: string,\n entityName: string,\n firebaseToken: string,\n apiKey: string,\n host?: string\n}): Promise<SamplePromptsResult> {\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/prompt_autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n },\n body: JSON.stringify({\n entityName: props.entityName,\n input: props.input ?? null\n })\n })\n .then(async (res) => {\n const data = await res.json();\n if (!res.ok) {\n console.error(\"fetchEntityPromptSuggestion\", data);\n throw Error(data.message);\n }\n return {\n prompts: data.data.prompts.map((e: string) => ({\n prompt: e,\n type: \"sample\"\n }))\n };\n });\n\n}\n\nexport async function autocompleteStream(props: {\n firebaseToken: string,\n textBefore?: string,\n textAfter: string,\n host?: string;\n onUpdate: (delta: string) => void;\n}) {\n\n let result = \"\";\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`\n // \"x-de-version\": version\n },\n body: JSON.stringify({\n textBefore: props.textBefore,\n textAfter: props.textAfter\n })\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n result += str;\n console.debug(\"Autocomplete update:\", str);\n props.onUpdate(str);\n }\n\n }).then(() => {\n console.debug(\"Autocomplete result:\", result);\n return result;\n });\n\n}\n","export function getAppendableSuggestion(suggestion: string | number | undefined, value: unknown): string | undefined {\n const suggestionIncludesValue = typeof suggestion === \"string\" && typeof value === \"string\" && suggestion.toLowerCase().trim().startsWith(value.toLowerCase().trim());\n return (typeof value === \"string\" && suggestionIncludesValue)\n ? suggestion.substring(suggestion.toLowerCase().trim().indexOf(value.toLowerCase().trim()) + value.trim().length)\n : undefined;\n}\n","import { getFieldId } from \"@rebasepro/admin\";\nimport { EnumValues, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder } from \"@rebasepro/common\";\nimport { InputProperty } from \"../types/data_enhancement_controller\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport function getSimplifiedProperties<M extends Record<string, any>>(properties: Properties, values: M, path = \"\"): Record<string, InputProperty> {\n if (!properties) return {};\n return Object.entries(properties)\n .map(([key, property]) => {\n if (isPropertyBuilder(property)) return {};\n const fullKey = path ? `${path}.${key}` : key;\n const valueInPath = getValueInPath(values, fullKey);\n return getSimplifiedProperty(property, fullKey, valueInPath)\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleProperty(property: Property): InputProperty {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.error(\"No fieldId found for property\", property);\n throw new Error(\"Field id not found\");\n }\n return {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: fieldId,\n enum: \"enum\" in property && property.enum\n ? getSimpleEnumValues(property.enum)\n : undefined,\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n}\n\nfunction getSimplifiedProperty(property: Property, path: string, value?: unknown): Record<string, InputProperty> {\n if (isPropertyBuilder(property)) return {};\n if (property.type === \"array\") {\n\n if (property.of && !Array.isArray(property.of) && !isPropertyBuilder(property.of)) {\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"repeat\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n of: getSimpleProperty(property.of as Property)\n };\n\n const result = { [path]: arrayParentProperty };\n // if (Array.isArray(value)) {\n // result = {\n // ...result,\n // ...value\n // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i}`, v))\n // .reduce((a, b) => ({ ...a, ...b }), {})\n // };\n // }\n //\n // const existingValuesCount = Array.isArray(value) ? value.length : 0;\n //\n // const newValuesCount = property.of && !isPropertyBuilder<any, any>(property.of) && (property.of as Property).type === \"map\" ? 1 : 3;\n // result = {\n // ...result,\n // // ...Array.from(Array(newValuesCount))\n // // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i + existingValuesCount}`, v))\n // // .reduce((a, b) => ({ ...a, ...b }), {})\n // }\n\n return result;\n } else if (property.oneOf) {\n\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"block\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n oneOf: {\n typeField: property.oneOf.typeField,\n valueField: property.oneOf.valueField,\n properties: Object.entries(property.oneOf.properties)\n .map(([key, prop]) => ({ [key]: getSimpleProperty(prop) }))\n .reduce((a, b) => ({ ...a,\n...b }), {})\n }\n };\n\n if (!Array.isArray(value)) {\n return { [path]: arrayParentProperty };\n }\n\n return value.map((v, i) => {\n if (v == null) return {};\n const typeKey = property.oneOf!.typeField ?? \"type\";\n const oneOfType = v[typeKey];\n const valueKey = property.oneOf!.valueField ?? \"value\";\n const oneOfValue = v[valueKey];\n const childProperty = property.oneOf!.properties[oneOfType];\n if (childProperty === undefined) {\n console.error(`No property found for type ${oneOfType}`, property.oneOf!.properties);\n return {};\n }\n const simplifiedProperty = getSimplifiedProperty(childProperty, `${path}.${i}.${valueKey}`, oneOfValue);\n return {\n [`${path}.${i}.${typeKey}`]: oneOfType,\n ...simplifiedProperty\n };\n }).reduce((a, b) => ({ ...a,\n...b }), { [path]: arrayParentProperty });\n }\n } else if (property.type === \"map\") {\n if (property.properties) {\n const mapProperties: Record<string, InputProperty> = Object.entries(property.properties)\n .map(([key, childProperty]) => {\n const childValue = value && typeof value === \"object\" ? (value as Record<string, unknown>)[key] : undefined;\n return getSimplifiedProperty(childProperty, key, childValue);\n })\n .map(o => attachPathToKeys(o, path))\n .reduce((a, b) => ({ ...a,\n...b }), {});\n\n if (Object.keys(mapProperties).length === 0) return {};\n const mapParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"group\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n return {\n [path]: mapParentProperty,\n ...mapProperties\n } as Record<string, InputProperty>;\n }\n } else {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.warn(`No fieldId found for property ${path} with type ${property.type}`);\n return {};\n }\n return {\n [path]: getSimpleProperty(property)\n };\n }\n return {};\n}\n\n// attach a path to every key in an object\nfunction attachPathToKeys(obj: Record<string, InputProperty>, path = \"\"): Record<string, InputProperty> {\n return Object.entries(obj)\n .map(([key, value]) => {\n const fullKey = path ? `${path}.${key}` : key;\n return { [fullKey]: value };\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleEnumValues(enumValues: EnumValues): string[] {\n if (Array.isArray(enumValues))\n return enumValues.map(v => String(v.id));\n if (typeof enumValues === \"object\")\n return Object.keys(enumValues);\n throw Error(\"getSimpleEnumValues: Invalid enumValues\");\n}\n","import { autocompleteStream } from \"../api\";\nimport { EditorAIController } from \"@rebasepro/admin\";\n\nexport function useEditorAIController({ getAuthToken }: { getAuthToken?: () => Promise<string> }): EditorAIController {\n const autocomplete = async (textBefore: string, textAfter: string, onUpdate: (delta: string) => void) => {\n if (!getAuthToken) {\n throw new Error(\"Firebase token is required\");\n }\n const firebaseToken = await getAuthToken();\n return autocompleteStream({\n firebaseToken,\n textBefore,\n textAfter,\n onUpdate\n });\n }\n\n return {\n autocomplete\n };\n}\n\n// async function * generateLoremIpsum(): AsyncGenerator<string> {\n// const loremIpsum = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\n# Heading\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\";\n//\n// const words = loremIpsum.split(\" \");\n//\n// for (const word of words) {\n// yield word;\n// await new Promise(resolve => setTimeout(resolve, 100));\n// }\n// }\n//\n// const generator = generateLoremIpsum();\n// for await (const word of generator) {\n//\n// }\n","import React, { PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n DataEnhancementController,\n EnhancedDataResult,\n EnhanceParams,\n InputProperty\n} from \"../types/data_enhancement_controller\";\nimport {\n useAuthController,\n useCustomizationController,\n useSnackbarController\n} from \"@rebasepro/core\";\nimport { useUrlController } from \"@rebasepro/admin\";\nimport { DataDriver, Entity, EntityCollection, PluginFormActionProps } from \"@rebasepro/types\";\nimport { enhanceDataAPIStream, fetchEntityPromptSuggestion } from \"../api\";\nimport { getAppendableSuggestion } from \"../utils/suggestions\";\nimport { getSimplifiedProperties } from \"../utils/properties\";\nimport { useEditorAIController } from \"../editor/useEditorAIController\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport const DataEnhancementControllerContext = React.createContext<DataEnhancementController>(null! as DataEnhancementController);\n\nexport type DataEnhancementControllerProviderProps = {\n\n apiKey: string;\n\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection\n }) => boolean;\n\n host?: string;\n}\n\nexport const useDataEnhancementController = (): DataEnhancementController => useContext(DataEnhancementControllerContext);\n\nfunction getPropertyFromKey(properties: Record<string, InputProperty>, propertyKey: string) {\n if (propertyKey in properties) {\n return properties[propertyKey];\n } else {\n //split the property key\n const split = propertyKey.split(\".\");\n if (split.length === 1) {\n return undefined;\n }\n const parentKey = split.slice(0, split.length - 1).join(\".\");\n return getPropertyFromKey(properties, parentKey);\n\n }\n}\n\nexport function DataEnhancementControllerProvider({\n apiKey,\n getConfigForPath,\n children,\n host,\n path,\n collection,\n formContext\n}: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps>) {\n\n const [enabled, setEnabled] = useState(false);\n const [suggestions, setSuggestions] = useState<Record<string, string | number>>({});\n const [loadingSuggestions, setLoadingSuggestions] = useState<string[]>([]);\n\n const enhancingInProgress = useRef(false);\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n\n const properties = useMemo(() => getSimplifiedProperties(collection.properties, formContext?.values ?? {}), [formContext?.values]);\n // const preEnhanceValuesRef = React.useRef(formContext?.values ?? {});\n const valuesRef = React.useRef(formContext?.values ?? {});\n useEffect(() => {\n if (!enhancingInProgress.current)\n valuesRef.current = formContext?.values ?? {};\n }, [formContext?.values]);\n\n const allowReferenceDataSelection = false;\n\n const updateConfig = useCallback(async () => {\n if (!getConfigForPath) return;\n const config = getConfigForPath({\n path,\n collection\n });\n if (config) {\n setEnabled(true);\n }\n }, [collection, getConfigForPath, path]);\n\n useEffect(() => {\n if (!getConfigForPath) {\n setEnabled(true);\n } else {\n updateConfig();\n }\n\n }, [getConfigForPath, updateConfig]);\n\n\n const urlController = useUrlController();\n\n const clearSuggestion = useCallback((propertyKey: string) => {\n setSuggestions((prev) => {\n //remove propertyKey from prev\n const {\n [propertyKey]: _,\n ...rest\n } = prev;\n return rest;\n });\n }, []);\n\n const appendValueDelta = useCallback((propertyKey: string, delta: string) => {\n\n const property = getPropertyFromKey(properties, propertyKey);\n if (delta === null || property?.disabled) {\n return;\n }\n\n // clearSuggestion(propertyKey);\n const value = getValueInPath(valuesRef.current, propertyKey);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n const updatedValue = currentValue + delta;\n // if (currentValue.length === 0) updatedValue = updatedValue.trimStart();\n valuesRef.current = {\n ...valuesRef.current,\n [propertyKey]: updatedValue\n };\n formContext?.setFieldValue(propertyKey, updatedValue, false);\n setSuggestions(prev => ({\n ...prev,\n [propertyKey]: (prev[propertyKey] ?? \"\") + delta\n }));\n }, [properties, formContext]);\n\n const updateSuggestedValues = useCallback((currentValues: object, updatedValues: Record<string, string | number>, replaceValues: boolean) => {\n\n setLoadingSuggestions((prev) => {\n return prev.filter(p => !Object.keys(updatedValues).includes(p));\n });\n\n Object.entries(updatedValues).forEach(([propertyKey, suggestion]) => {\n\n const value = getValueInPath(currentValues, propertyKey);\n const property = getPropertyFromKey(properties, propertyKey);\n\n if (!property || suggestion === null || property?.disabled) {\n return;\n }\n\n if (typeof suggestion === \"number\") {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n if (replaceValues) {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n const appendableValue = getAppendableSuggestion(suggestion, value);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n if (appendableValue) {\n formContext?.setFieldValue(propertyKey, suggestion);\n } else {\n const multiline = property?.fieldConfigId === \"multiline\" || property?.fieldConfigId === \"markdown\";\n const trimmedValue = currentValue.trimEnd();\n if (multiline && (trimmedValue.endsWith(\".\") || trimmedValue.endsWith(\"?\") || trimmedValue.endsWith(\"!\") || trimmedValue.endsWith(\":\"))) {\n formContext?.setFieldValue(propertyKey, trimmedValue + \"\\n\\n\" + (suggestion as string).trimStart());\n } else {\n formContext?.setFieldValue(propertyKey, trimmedValue + (trimmedValue.length > 0 ? \" \" : \"\") + (suggestion as string));\n }\n }\n });\n\n setSuggestions(prev => ({\n ...prev,\n ...Object.keys(updatedValues)\n .reduce((acc, key) => {\n const value = getValueInPath(formContext?.values, key);\n const suggestion = updatedValues[key];\n return {\n ...acc,\n [key]: getAppendableSuggestion(suggestion, value) ?? suggestion\n };\n }, {})\n }));\n }, [properties, formContext]);\n\n const displayNeededSubscriptionSnackbar = useCallback((projectId: unknown) => {\n snackbarController.open({\n type: \"warning\",\n message: \"A valid subscription is needed in order to use this function.\",\n autoHideDuration: 4000\n });\n }, [snackbarController]);\n\n const editorAIController = useEditorAIController({ getAuthToken: authController.getAuthToken });\n\n const clearAllSuggestions = useCallback(() => {\n setSuggestions({});\n }, []);\n\n const enhance = useCallback(async (props: EnhanceParams<Record<string, unknown>>): Promise<EnhancedDataResult | null> => {\n\n if (!authController.user) {\n snackbarController.open({\n type: \"warning\",\n message: \"You need to be logged in to enhance data\"\n });\n return Promise.reject(new Error(\"Not logged in\"));\n }\n\n const resolvedPath = urlController.resolveDatabasePathsFrom(path);\n const firebaseToken = await authController.getAuthToken();\n\n if (props.propertyKey) {\n clearSuggestion(props.propertyKey)\n } else {\n clearAllSuggestions();\n }\n\n setLoadingSuggestions((prev) => [...prev, ...(props.propertyKey ? [props.propertyKey] : Object.keys(properties))]);\n enhancingInProgress.current = true;\n\n const currentValues = valuesRef.current ?? {};\n\n return new Promise((resolve, reject) => {\n function onError(e: unknown) {\n setLoadingSuggestions([]);\n const err = e instanceof Error ? e : typeof e === \"object\" && e !== null ? e : new Error(String(e));\n const errorObj = err as Record<string, unknown>;\n if (errorObj.code === \"payment-required\") {\n const data = errorObj.data as Record<string, unknown> | undefined;\n const projectId = data?.projectId;\n displayNeededSubscriptionSnackbar(projectId);\n } else {\n console.error(\"Enhance error\", e);\n }\n reject(e);\n enhancingInProgress.current = false;\n }\n\n try {\n enhanceDataAPIStream({\n ...props,\n host,\n apiKey,\n properties,\n path: resolvedPath,\n entityName: collection.singularName ?? collection.name,\n entityDescription: collection.description,\n\n firebaseToken,\n onUpdate: (suggestions) => {\n console.debug(\"de onUpdate\", suggestions);\n updateSuggestedValues(currentValues, suggestions, props.replaceValues ?? false);\n },\n onUpdateDelta: (propertyKey: string, partialValue: string) => {\n // console.debug(\"de delta\", propertyKey, partialValue);\n appendValueDelta(propertyKey, partialValue);\n },\n onError,\n onEnd: (result) => {\n console.debug(\"de onEnd\", result);\n if (result.errors) {\n result.errors.forEach((error) => {\n snackbarController.open({\n type: \"warning\",\n message: error\n })\n });\n }\n if (Object.keys(result.suggestions).length === 0) {\n snackbarController.open({\n type: \"info\",\n autoHideDuration: 1800,\n message: \"No fields were updated\"\n })\n }\n setLoadingSuggestions([]);\n resolve(result);\n enhancingInProgress.current = false;\n }\n }).catch(onError);\n } catch (e: unknown) {\n onError(e);\n }\n });\n }, [\n authController, urlController, path, clearSuggestion, clearAllSuggestions,\n properties, host, apiKey, collection, updateSuggestedValues, appendValueDelta, displayNeededSubscriptionSnackbar, snackbarController\n ]);\n\n const getSamplePrompts = useCallback(async (entityName: string, input?: string) => {\n const firebaseToken = await authController.getAuthToken()\n return fetchEntityPromptSuggestion({\n host,\n entityName,\n firebaseToken,\n apiKey,\n input\n });\n }, [apiKey, authController.getAuthToken, host]);\n\n const dataEnhancementController: DataEnhancementController = useMemo(() => ({\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n }), [\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n ]);\n\n return (\n <DataEnhancementControllerContext.Provider\n value={dataEnhancementController}>\n {children}\n </DataEnhancementControllerContext.Provider>\n );\n}\n\n\n","\nimport React, { useCallback, useDeferredValue, useEffect, useRef } from \"react\";\n\nimport {\n Button,\n CircularProgress,\n cls,\n focusedDisabled,\n IconButton,\n iconSize,\n Menu,\n MenuItem,\n SendIcon,\n Separator,\n TextareaAutosize,\n XIcon\n} from \"@rebasepro/ui\";\nimport {\n AIIcon,\n useLargeLayout\n} from \"@rebasepro/core\";\nimport { EntityStatus, PluginFormActionProps, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder, stripCollectionPath } from \"@rebasepro/common\";\nimport { useDataEnhancementController } from \"./DataEnhancementControllerProvider\";\nimport { SamplePrompt } from \"../types/data_enhancement_controller\";\n\nexport function FormEnhanceAction({\n entityId,\n path,\n status,\n collection,\n formContext,\n openEntityMode\n}: PluginFormActionProps) {\n\n const largeLayout = useLargeLayout();\n\n const storageKey = createLocalStorageKey(path, status);\n\n const [loading, setLoading] = React.useState(false);\n const dataEnhancementController = useDataEnhancementController();\n\n const [samplePrompts, setSamplePrompts] = React.useState<SamplePrompt[] | undefined>(undefined);\n const [instructions, setInstructions] = React.useState<string>(\"\");\n\n const getSamplePrompts = dataEnhancementController?.getSamplePrompts;\n\n const loadingPrompts = useRef(false);\n const updateSuggestedPrompts = useCallback(async function updateSuggestedPrompts(instructions?: string) {\n if (!getSamplePrompts) return;\n if (loadingPrompts.current) return;\n loadingPrompts.current = true;\n const prompts = status === \"new\"\n ? (await getSamplePrompts(collection.singularName ?? collection.name, instructions)).prompts\n : getPromptsForExistingEntities(collection.properties);\n\n const recentPromptsFromStorage = getRecentPromptsFromStorage(storageKey);\n const recentPrompts = recentPromptsFromStorage.map(prompt => prompt.prompt);\n setSamplePrompts([...recentPromptsFromStorage, ...prompts.filter(p => !recentPrompts.includes(p.prompt))].slice(0, 5));\n loadingPrompts.current = false;\n },\n [collection.name, collection.singularName, getSamplePrompts, status]);\n\n const deferredValues = useDeferredValue(formContext?.values);\n // const enoughData = countStringCharacters(deferredValues, collection.properties) > 20;\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n if (!samplePrompts) {\n setSamplePrompts(getRecentPromptsFromStorage(storageKey));\n updateSuggestedPrompts().then();\n }\n }, [dataEnhancementController, samplePrompts, storageKey, updateSuggestedPrompts, instructions, status]);\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n updateSuggestedPrompts().then();\n }, [dataEnhancementController, status]);\n\n const enhance = (prompt?: string) => {\n if (!dataEnhancementController || !formContext?.values) return;\n setLoading(true);\n if (prompt) {\n addRecentPrompt(storageKey, prompt);\n setSamplePrompts([{\n prompt,\n type: \"recent\"\n }, ...(samplePrompts ?? []).slice(0, 5)]);\n }\n return dataEnhancementController.enhance({\n entityId,\n values: formContext!.values,\n instructions: prompt,\n replaceValues: true\n }).finally(() => {\n setLoading(false);\n });\n };\n\n if (!dataEnhancementController?.enabled)\n return null;\n\n const suggestions = dataEnhancementController.suggestions;\n const hasSuggestions = Object.values(suggestions).filter(Boolean).length > 0;\n\n const disabledSuggestionActions = !hasSuggestions;\n const promptSuggestionsEnabled = (samplePrompts ?? []).length > 0 && instructions.length === 0;\n\n // const noIdSet = !formContext?.entityId;\n\n function submit() {\n enhance(instructions);\n }\n\n return (\n <Menu\n align={\"end\"}\n sideOffset={8}\n className={\"max-w-[100vw]\"}\n trigger={<Button variant={\"filled\"}\n color={\"neutral\"}\n fullWidth={largeLayout && openEntityMode === \"full_screen\"}\n size={\"small\"}\n disabled={loading}>\n {!loading && <AIIcon size={\"small\"}/>}\n {loading && <CircularProgress size={\"small\"}/>}\n Autofill\n </Button>}>\n\n <MenuItem className={\"py-4\"}\n onClick={() => {\n enhance();\n }}>\n <AIIcon size={\"small\"}/>\n Autofill based on the current content\n </MenuItem>\n\n <Separator orientation={\"horizontal\"} className={\"mt-2\"}/>\n\n {samplePrompts?.map((samplePrompt, index) => {\n return <MenuItem\n key={index + \"_\" + samplePrompt.prompt}\n onClick={() => {\n setInstructions(samplePrompt.prompt);\n enhance(samplePrompt.prompt);\n }}\n >\n <div className={\"pl-9 grow text-text-secondary dark:text-text-secondary-dark\"}>\n {samplePrompt.prompt}\n </div>\n\n {samplePrompt.type === \"recent\" && <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeRecentPrompt(storageKey, samplePrompt.prompt);\n setSamplePrompts((samplePrompts ?? []).filter(p => p.prompt !== samplePrompt.prompt));\n }}\n size={\"smallest\"}\n >\n <XIcon size={iconSize.smallest}/>\n </IconButton>\n }\n </MenuItem>;\n })}\n\n <Separator orientation={\"horizontal\"}/>\n\n <div\n className={cls(\n \"my-2 w-[500px] max-w-full flex items-start text-surface-700 dark:text-surface-200\"\n )}>\n\n <TextareaAutosize\n className={cls(\"p-4 rounded-lg resize-none bg-surface-100 dark:bg-surface-950 mx-2 w-full grow outline-hidden max-h-[300px] overflow-auto\", focusedDisabled)}\n value={instructions}\n autoFocus={status === \"new\"}\n disabled={loading}\n onFocus={(event) => {\n event.stopPropagation();\n }}\n placeholder={\"...or provide instructions\"}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n submit();\n }\n\n }}\n onChange={(e) => {\n setInstructions(e.target.value);\n }}\n />\n\n <IconButton\n size={\"small\"}\n onClick={() => {\n setInstructions(\"\");\n }}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n <XIcon size={iconSize.small}/>\n </IconButton>\n\n <IconButton\n onClick={() => enhance(instructions)}\n size={\"small\"}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n {loading &&\n <CircularProgress size={\"smallest\"}/>}\n {!loading &&\n <SendIcon color={\"primary\"}/>}\n </IconButton>\n\n </div>\n\n </Menu>\n );\n}\n\nexport interface EnhanceDialogProps {\n open: boolean;\n onClose: () => void;\n selectReferences: () => void;\n loading: boolean;\n enhance: (instructions: string) => void;\n samplePrompts?: string[];\n}\n\nfunction getPromptsForExistingEntities(properties: Properties): SamplePrompt[] {\n\n const multilineProperties = Object.values(properties).filter((p: Property) => {\n if (isPropertyBuilder(p)) {\n return false;\n }\n return p.type === \"string\" && (p.ui?.markdown || p.ui?.multiline);\n });\n\n const multilinePrompt: Property | undefined = multilineProperties.length > 0\n ? multilineProperties[Math.floor(Math.random() * multilineProperties.length)] as Property\n : undefined;\n\n const prompts = [\n \"Fill the missing fields\",\n \"Translate the missing content\"\n ];\n if (multilinePrompt) {\n prompts.push(`Add 2 paragraphs to '${multilinePrompt.name}'`);\n }\n return prompts.map(p => ({\n prompt: p,\n type: \"sample\"\n }));\n}\n\nconst createLocalStorageKey = (path: string, status: EntityStatus) => {\n const statusString = status === \"new\" ? \"new\" : \"existing\";\n return `data_enhancement::${statusString}::${stripCollectionPath(path)}`;\n};\n\nconst getRecentPromptsFromStorage = (storageKey: string): SamplePrompt[] => {\n const item = localStorage.getItem(storageKey);\n return item ? JSON.parse(item).map((e: string) => ({\n prompt: e,\n type: \"recent\"\n })) : [];\n};\n\nconst addRecentPrompt = (storageKey: string, prompt: string) => {\n if (!prompt || prompt.trim().length === 0) {\n return;\n }\n const recentPrompts = getRecentPromptsFromStorage(storageKey);\n localStorage.setItem(storageKey, JSON.stringify([prompt, ...recentPrompts\n .map(e => e.prompt)\n .filter(e => e !== prompt)\n .slice(0, 5)]));\n};\n\nconst removeRecentPrompt = (storageKey: string, prompt: string) => {\n localStorage.setItem(storageKey, JSON.stringify(getRecentPromptsFromStorage(storageKey)\n .map(e => e.prompt)\n .filter(e => e !== prompt)));\n};\n","import React from \"react\";\n\nimport { EntityCollection, RebasePlugin, User } from \"@rebasepro/types\";\nimport { DataEnhancementControllerProvider } from \"./components/DataEnhancementControllerProvider\";\nimport { FormEnhanceAction } from \"./components/FormEnhanceAction\";\n\nconst DEFAULT_API_KEY = \"fcms-U9jdDii0xXWSDC34asfrf54lbkFJBfKfRWcEDEwdc4V5wDWEDF\";\n\nexport interface DataEnhancementPluginProps {\n\n apiKey?: string;\n\n /**\n * Use this function to determine if the data enhancement plugin should be enabled for a given path.\n * If this function is not provided, the plugin will be enabled for all paths.\n * If the function returns false, the plugin will be disabled for the given path.\n * You can also return a configuration object to override the default configuration.\n *\n * @param path\n * @param collection\n */\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection,\n user: User | null\n }) => boolean;\n\n /**\n * Host to use for the data enhancement API.\n * This prop is only use in development mode.\n */\n host?: string;\n}\n\n/**\n * Use this hook to initialise the data enhancement plugin.\n * This is likely the only hook you will need to use.\n * @param props\n */\nexport function useDataEnhancementPlugin(props?: DataEnhancementPluginProps): RebasePlugin {\n\n const apiKey = props?.apiKey ?? DEFAULT_API_KEY;\n const getConfigForPath = props?.getConfigForPath;\n\n return React.useMemo(() => ({\n key: \"data_enhancement\",\n slots: [\n {\n slot: \"form.actions\",\n Component: FormEnhanceAction,\n order: 40\n }\n ],\n providers: [\n {\n scope: \"form\" as const,\n Component: DataEnhancementControllerProvider as React.ComponentType<any>,\n props: {\n apiKey,\n getConfigForPath,\n host: props?.host\n }\n }\n ]\n }), [apiKey, getConfigForPath, props?.host]);\n}\n"],"names":["flatMapEntityValues","values","path","Object","entries","flatMap","key","value","currentPath","reduce","acc","curr","DEFAULT_SERVER","enhanceDataAPIStream","props","flatValues","properties","inputEntity","entityId","request","entityName","entityDescription","propertyKey","propertyInstructions","instructions","console","debug","fetch","host","method","headers","Authorization","firebaseToken","apiKey","body","JSON","stringify","then","res","ok","error","json","reader","getReader","Error","chunk","readChunks","str","TextDecoder","decode","split","forEach","s","length","data","parse","trim","type","onUpdateDelta","partialValue","onUpdate","onEnd","e","onError","String","Symbol","asyncIterator","readResult","read","done","fetchEntityPromptSuggestion","input","message","prompts","map","prompt","autocompleteStream","result","textBefore","textAfter","getAppendableSuggestion","suggestion","suggestionIncludesValue","toLowerCase","startsWith","substring","indexOf","undefined","getSimplifiedProperties","property","isPropertyBuilder","fullKey","valueInPath","getValueInPath","getSimplifiedProperty","a","b","getSimpleProperty","fieldId","getFieldId","name","description","fieldConfigId","enum","getSimpleEnumValues","disabled","Boolean","ui","readOnly","of","Array","isArray","arrayParentProperty","oneOf","typeField","valueField","prop","v","i","typeKey","oneOfType","valueKey","oneOfValue","childProperty","simplifiedProperty","mapProperties","childValue","o","attachPathToKeys","keys","mapParentProperty","warn","obj","enumValues","id","useEditorAIController","getAuthToken","autocomplete","DataEnhancementControllerContext","React","createContext","useDataEnhancementController","useContext","getPropertyFromKey","parentKey","slice","join","DataEnhancementControllerProvider","getConfigForPath","children","collection","formContext","enabled","setEnabled","useState","suggestions","setSuggestions","loadingSuggestions","setLoadingSuggestions","enhancingInProgress","useRef","authController","useAuthController","snackbarController","useSnackbarController","useMemo","valuesRef","useEffect","current","allowReferenceDataSelection","updateConfig","useCallback","config","urlController","useUrlController","clearSuggestion","prev","_","rest","appendValueDelta","delta","currentValue","updatedValue","setFieldValue","updateSuggestedValues","currentValues","updatedValues","replaceValues","filter","p","includes","appendableValue","multiline","trimmedValue","trimEnd","endsWith","trimStart","displayNeededSubscriptionSnackbar","projectId","open","autoHideDuration","editorAIController","clearAllSuggestions","enhance","user","Promise","reject","resolvedPath","resolveDatabasePathsFrom","resolve","err","errorObj","code","singularName","errors","catch","getSamplePrompts","dataEnhancementController","FormEnhanceAction","status","openEntityMode","largeLayout","useLargeLayout","storageKey","createLocalStorageKey","loading","setLoading","samplePrompts","setSamplePrompts","setInstructions","loadingPrompts","updateSuggestedPrompts","getPromptsForExistingEntities","recentPromptsFromStorage","getRecentPromptsFromStorage","recentPrompts","useDeferredValue","addRecentPrompt","finally","submit","jsxs","Menu","Button","jsx","AIIcon","CircularProgress","MenuItem","Separator","samplePrompt","index","IconButton","preventDefault","stopPropagation","removeRecentPrompt","XIcon","iconSize","smallest","cls","TextareaAutosize","focusedDisabled","event","shiftKey","target","small","SendIcon","multilineProperties","markdown","multilinePrompt","Math","floor","random","push","statusString","stripCollectionPath","item","localStorage","getItem","setItem","DEFAULT_API_KEY","useDataEnhancementPlugin","$","_c","t0","t1","for","slot","Component","order","t2","t3","slots","providers","scope"],"mappings":"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"}
@@ -12,8 +12,8 @@ export declare function enhanceDataAPIStream<M extends Record<string, unknown>>(
12
12
  properties: Record<string, InputProperty>;
13
13
  instructions?: string;
14
14
  firebaseToken: string;
15
- onUpdate: (suggestions: Record<string, any>) => void;
16
- onUpdateDelta: (propertyKey: string, partialValue: any) => void;
15
+ onUpdate: (suggestions: Record<string, string | number>) => void;
16
+ onUpdateDelta: (propertyKey: string, partialValue: string) => void;
17
17
  onError: (error: Error) => void;
18
18
  onEnd: (result: EnhancedDataResult) => void;
19
19
  host?: string;
@@ -11,4 +11,4 @@ export type DataEnhancementControllerProviderProps = {
11
11
  host?: string;
12
12
  };
13
13
  export declare const useDataEnhancementController: () => DataEnhancementController;
14
- export declare function DataEnhancementControllerProvider({ apiKey, getConfigForPath, children, host, path, collection, formContext }: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps<any>>): import("react/jsx-runtime").JSX.Element;
14
+ export declare function DataEnhancementControllerProvider({ apiKey, getConfigForPath, children, host, path, collection, formContext }: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps>): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
1
  export { useDataEnhancementPlugin } from "./useDataEnhancementPlugin";
2
2
  export type { DataEnhancementPluginProps } from "./useDataEnhancementPlugin";
3
- export type { SubscriptionMessageProps } from "./types/subscriptions_message_props";
4
3
  export * from "./editor/useEditorAIController";
@@ -1 +1 @@
1
- export declare function getAppendableSuggestion(suggestion: string | number | undefined, value: any): string | undefined;
1
+ export declare function getAppendableSuggestion(suggestion: string | number | undefined, value: unknown): string | undefined;
@@ -1,6 +1,4 @@
1
- import { StorageSource } from "./storage";
2
1
  import { Role, User } from "../users";
3
- import { RebaseData } from "./data";
4
2
  /**
5
3
  * Capabilities advertised by an auth provider.
6
4
  * UI components use this to show/hide features dynamically
@@ -89,6 +87,8 @@ export interface AuthControllerExtended<USER extends User = User, ExtraData = un
89
87
  code: string;
90
88
  redirectUri: string;
91
89
  }) => Promise<void>;
90
+ /** Generic OAuth login — works with any provider. Posts payload to /auth/{providerId}. */
91
+ oauthLogin?: (providerId: string, payload: Record<string, unknown>) => Promise<void>;
92
92
  /** Register a new user */
93
93
  register?(email: string, password: string, displayName?: string): Promise<void>;
94
94
  /** Skip login (for anonymous access if enabled) */
@@ -102,25 +102,3 @@ export interface AuthControllerExtended<USER extends User = User, ExtraData = un
102
102
  /** Update user profile */
103
103
  updateProfile?(displayName?: string, photoURL?: string): Promise<USER>;
104
104
  }
105
- /**
106
- * Implement this function to allow access to specific users.
107
- * @group Hooks and utilities
108
- */
109
- export type Authenticator<USER extends User = User> = (props: {
110
- /**
111
- * Logged-in user or null
112
- */
113
- user: USER | null;
114
- /**
115
- * AuthController
116
- */
117
- authController: AuthController<USER>;
118
- /**
119
- * Unified data access API
120
- */
121
- data: RebaseData;
122
- /**
123
- * Used storage implementation
124
- */
125
- storageSource: StorageSource;
126
- }) => boolean | Promise<boolean>;
@@ -65,7 +65,6 @@ export interface AdminRole {
65
65
  name: string;
66
66
  isAdmin: boolean;
67
67
  defaultPermissions: Record<string, unknown> | null;
68
- config: Record<string, unknown> | null;
69
68
  }
70
69
  /**
71
70
  * Client-side Admin API interface.
@@ -123,7 +122,6 @@ export interface AdminAPI {
123
122
  name: string;
124
123
  isAdmin?: boolean;
125
124
  defaultPermissions?: Record<string, unknown>;
126
- config?: Record<string, unknown>;
127
125
  }): Promise<{
128
126
  role: AdminRole;
129
127
  }>;
@@ -131,7 +129,6 @@ export interface AdminAPI {
131
129
  name?: string;
132
130
  isAdmin?: boolean;
133
131
  defaultPermissions?: Record<string, unknown>;
134
- config?: Record<string, unknown>;
135
132
  }): Promise<{
136
133
  role: AdminRole;
137
134
  }>;
@@ -4,7 +4,7 @@ import type { EntityReference } from "../types/entities";
4
4
  * Controller that provides access to the registered entity collections.
5
5
  * @group Models
6
6
  */
7
- export type CollectionRegistryController<DB = Record<string, unknown>, EC extends EntityCollection = EntityCollection<any>> = {
7
+ export type CollectionRegistryController<DB = Record<string, unknown>, EC extends EntityCollection = EntityCollection> = {
8
8
  /**
9
9
  * List of the mapped collections in the CMS.
10
10
  * Each entry relates to a collection in the root database.
@@ -76,6 +76,21 @@ export interface FindResponse<M extends Record<string, unknown> = Record<string,
76
76
  hasMore: boolean;
77
77
  };
78
78
  }
79
+ export type FilterOperator = WhereFilterOpShort;
80
+ /**
81
+ * Fluent Query Builder Interface supported on both client and server accessors.
82
+ * @group Data
83
+ */
84
+ export interface QueryBuilderInterface<M extends Record<string, unknown> = Record<string, unknown>> {
85
+ where(column: keyof M & string, operator: FilterOperator, value: unknown): this;
86
+ orderBy(column: keyof M & string, ascending?: "asc" | "desc"): this;
87
+ limit(count: number): this;
88
+ offset(count: number): this;
89
+ search(searchString: string): this;
90
+ include(...relations: string[]): this;
91
+ find(): Promise<FindResponse<M>>;
92
+ listen(onUpdate: (data: FindResponse<M>) => void, onError?: (error: Error) => void): () => void;
93
+ }
79
94
  /**
80
95
  * A single collection's CRUD accessor.
81
96
  *
@@ -124,6 +139,12 @@ export interface CollectionAccessor<M extends Record<string, unknown> = Record<s
124
139
  * Count the number of records matching the given filter.
125
140
  */
126
141
  count?(params?: FindParams): Promise<number>;
142
+ where(column: keyof M & string, operator: FilterOperator, value: unknown): QueryBuilderInterface<M>;
143
+ orderBy(column: keyof M & string, ascending?: "asc" | "desc"): QueryBuilderInterface<M>;
144
+ limit(count: number): QueryBuilderInterface<M>;
145
+ offset(count: number): QueryBuilderInterface<M>;
146
+ search(searchString: string): QueryBuilderInterface<M>;
147
+ include(...relations: string[]): QueryBuilderInterface<M>;
127
148
  }
128
149
  /**
129
150
  * The unified data access object.
@@ -17,6 +17,21 @@ export type ListenEntityProps<M extends Record<string, unknown> = Record<string,
17
17
  onUpdate: (entity: Entity<M> | null) => void;
18
18
  onError?: (error: Error) => void;
19
19
  };
20
+ /**
21
+ * Configuration for vector similarity search queries.
22
+ * Vector search applies an ORDER BY distance expression and optionally
23
+ * filters results by a distance threshold.
24
+ */
25
+ export interface VectorSearchParams {
26
+ /** Property name containing the vector column */
27
+ property: string;
28
+ /** Query vector to compare against */
29
+ vector: number[];
30
+ /** Distance function (default: "cosine") */
31
+ distance?: "cosine" | "l2" | "inner_product";
32
+ /** Only return results within this distance threshold */
33
+ threshold?: number;
34
+ }
20
35
  /**
21
36
  * @internal
22
37
  */
@@ -30,6 +45,8 @@ export interface FetchCollectionProps<M extends Record<string, unknown> = Record
30
45
  orderBy?: string;
31
46
  searchString?: string;
32
47
  order?: "desc" | "asc";
48
+ /** Vector similarity search configuration */
49
+ vectorSearch?: VectorSearchParams;
33
50
  }
34
51
  /**
35
52
  * @internal
@@ -187,6 +204,7 @@ export interface RestFetchService {
187
204
  startAfter?: Record<string, unknown>;
188
205
  searchString?: string;
189
206
  databaseId?: string;
207
+ vectorSearch?: VectorSearchParams;
190
208
  }, include?: string[]): Promise<Record<string, unknown>[]>;
191
209
  /**
192
210
  * Fetch a single flattened entity with optional relation includes.
@@ -4,6 +4,7 @@ import type { EntityCollectionsBuilder } from "../types/builders";
4
4
  import type { EntityCustomView } from "../types/entity_views";
5
5
  import type { EntityAction } from "../types/entity_actions";
6
6
  import type { AppView, NavigationGroupMapping } from "./navigation";
7
+ import type { RebasePlugin } from "../types/plugins";
7
8
  /**
8
9
  * Options to enable the built-in collection editor.
9
10
  * When provided to `<RebaseCMS>`, the editor is auto-wired as a native feature.
@@ -19,12 +20,12 @@ export interface CollectionEditorOptions {
19
20
  /** Suggested base paths shown when creating new collections. */
20
21
  pathSuggestions?: string[];
21
22
  }
22
- export interface RebaseCMSConfig<EC extends EntityCollection = any> {
23
+ export interface RebaseCMSConfig<EC extends EntityCollection = EntityCollection> {
23
24
  collections?: EC[] | EntityCollectionsBuilder<EC>;
24
25
  homePage?: ReactNode;
25
- entityViews?: EntityCustomView<any>[];
26
+ entityViews?: EntityCustomView[];
26
27
  entityActions?: EntityAction[];
27
- plugins?: any[];
28
+ plugins?: RebasePlugin[];
28
29
  /**
29
30
  * Centralized configuration for how collections and views are grouped
30
31
  * in the navigation sidebar and home page.
@@ -42,7 +43,7 @@ export interface RebaseCMSConfig<EC extends EntityCollection = any> {
42
43
  collectionEditor?: boolean | CollectionEditorOptions;
43
44
  }
44
45
  export interface RebaseStudioConfig {
45
- tools?: ("sql" | "js" | "rls" | "schema" | "storage" | "cron" | "schema-visualizer" | "branches" | "api")[];
46
+ tools?: ("sql" | "js" | "rls" | "schema" | "storage" | "cron" | "schema-visualizer" | "branches" | "api" | "logs")[];
46
47
  homePage?: ReactNode;
47
48
  devViews?: AppView[];
48
49
  }
@@ -28,7 +28,7 @@ export type RebaseCallContext<USER extends User = User> = {
28
28
  * const { client } = props.context;
29
29
  * const result = await client.functions.invoke('extract-job', { url });
30
30
  */
31
- client: RebaseClient<any>;
31
+ client: RebaseClient;
32
32
  /**
33
33
  * Unified data access — `context.data.products.create(...)`.
34
34
  * Access any collection as a dynamic property.
@@ -133,7 +133,7 @@ export interface AuthUserData {
133
133
  displayName?: string | null;
134
134
  photoUrl?: string | null;
135
135
  emailVerified?: boolean;
136
- metadata?: Record<string, any>;
136
+ metadata?: Record<string, unknown>;
137
137
  createdAt?: Date;
138
138
  updatedAt?: Date;
139
139
  }
@@ -146,7 +146,7 @@ export interface AuthCreateUserData {
146
146
  password?: string;
147
147
  displayName?: string;
148
148
  photoUrl?: string;
149
- metadata?: Record<string, any>;
149
+ metadata?: Record<string, unknown>;
150
150
  }
151
151
  /**
152
152
  * Role data exposed by the auth adapter.
@@ -168,7 +168,6 @@ export interface AuthRoleData {
168
168
  edit?: boolean;
169
169
  delete?: boolean;
170
170
  }> | null;
171
- config?: Record<string, unknown> | null;
172
171
  }
173
172
  /**
174
173
  * Data for creating a role.
@@ -180,7 +179,6 @@ export interface AuthCreateRoleData {
180
179
  isAdmin?: boolean;
181
180
  defaultPermissions?: AuthRoleData["defaultPermissions"];
182
181
  collectionPermissions?: AuthRoleData["collectionPermissions"];
183
- config?: AuthRoleData["config"];
184
182
  }
185
183
  /**
186
184
  * User management operations for the admin panel.
@@ -589,10 +589,6 @@ export interface FilterPreset<Key extends string = string> {
589
589
  */
590
590
  sort?: [Key, "asc" | "desc"];
591
591
  }
592
- /**
593
- * @deprecated Use {@link FilterPreset} instead.
594
- */
595
- export type QuickFilter<Key extends string = string> = FilterPreset<Key>;
596
592
  /**
597
593
  * Used to indicate valid filter combinations (e.g. created in Firestore)
598
594
  * If the user selects a specific filter/sort combination, the CMS checks if it's