@oneclick.dev/cms-core-modules 0.0.70 → 0.0.72
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.
- package/dist/Acquisition-D_Qx7XRY.mjs +400 -0
- package/dist/Acquisition-_-cq972V.js +1 -0
- package/dist/AppointmentDetailsCard-CtK0Cj_O.js +1 -0
- package/dist/AppointmentDetailsCard-i4Ky8WnK.mjs +161 -0
- package/dist/AppointmentEditor-BeOtYV6u.mjs +196 -0
- package/dist/AppointmentEditor-CaTfbkIf.js +1 -0
- package/dist/AppointmentListTable-CQ3uXfa8.js +1 -0
- package/dist/AppointmentListTable-G5dIeCYj.mjs +159 -0
- package/dist/Audience-BdlrWkY-.mjs +489 -0
- package/dist/Audience-QnFQs93n.js +1 -0
- package/dist/Content-C-4Cdniz.js +1 -0
- package/dist/Content-DW6xvbUo.mjs +358 -0
- package/dist/ContentEditor-3JFlC9N1.js +313 -0
- package/dist/{ContentEditor-B7IYLH91.mjs → ContentEditor-7SDjf5Hk.mjs} +16535 -25527
- package/dist/CountryBreakdownCard-BUfJ-umQ.js +1 -0
- package/dist/CountryBreakdownCard-Dc_vZ9dJ.mjs +196 -0
- package/dist/{Create-D8NBEkJU.js → Create-CRn2sMHp.js} +1 -1
- package/dist/{Create-BDiyCtrp.mjs → Create-DtFzwxn_.mjs} +1 -1
- package/dist/DateFormatter-C9qfmQnP.js +1 -0
- package/dist/{DateFormatter-DAZP9a6L.mjs → DateFormatter-DfIwyrnF.mjs} +399 -258
- package/dist/{Detail-Cxd2VMOl.js → Detail-BcboL7NF.js} +1 -1
- package/dist/{Detail-CxUU6BpO.mjs → Detail-BwDnY42G.mjs} +1 -1
- package/dist/{Detail-DTHaYmyl.js → Detail-Bxi7lG9x.js} +1 -1
- package/dist/{Detail-BGD75ul4.mjs → Detail-CVgWHbMC.mjs} +22 -18
- package/dist/DeviceBreakdownCard-BJcQNo8a.mjs +159 -0
- package/dist/DeviceBreakdownCard-CsoK6JUO.js +1 -0
- package/dist/{Find-B4sAEx0B.mjs → Find-XPcJxeRH.mjs} +1 -1
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-B-ZhMrMu.js → NewReservationDialog.vue_vue_type_script_setup_true_lang-C5YczjNb.js} +1 -1
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-CJ7hh7ug.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-Ds7z0qeH.mjs} +1 -1
- package/dist/{Overview-HvlDEgqi.mjs → Overview--XpvBbqz.mjs} +1 -1
- package/dist/Overview-B8OF-JJr.mjs +567 -0
- package/dist/Overview-DSU1Nh7B.js +1 -0
- package/dist/PeakHoursCard-BNl_U1r_.js +1 -0
- package/dist/PeakHoursCard-hV8PdGsf.mjs +182 -0
- package/dist/ProductDetailsCard-BwktdlIf.js +1 -0
- package/dist/ProductDetailsCard-CJBkZSER.mjs +121 -0
- package/dist/RealtimeCard-CRJHS64l.mjs +126 -0
- package/dist/RealtimeCard-CxtqQHee.js +1 -0
- package/dist/SearchTermsCard-DGRbo5ZP.js +1 -0
- package/dist/SearchTermsCard-Dwa-P7My.mjs +201 -0
- package/dist/SeoHealth-BqlYiSCj.js +1 -0
- package/dist/SeoHealth-DG004AsJ.mjs +523 -0
- package/dist/{TableView-C4NNrJpP.js → TableView-CU0a9ih2.js} +162 -199
- package/dist/{TableView-B5OyApnP.mjs → TableView-fYC7kB6j.mjs} +23309 -24320
- package/dist/TopPagesCard-Dv52to_J.mjs +159 -0
- package/dist/TopPagesCard-pZ-nAsaI.js +1 -0
- package/dist/TrafficSourcesCard-CBOPV1J1.js +1 -0
- package/dist/TrafficSourcesCard-CMhcj2k2.mjs +197 -0
- package/dist/VisitorStatsCard-BHn4oSnt.mjs +174 -0
- package/dist/VisitorStatsCard-tApB_7v8.js +1 -0
- package/dist/{agenda-CTG6N_Lt.mjs → agenda-XqvbrU72.mjs} +2 -2
- package/dist/{agenda-OSkAh0Oa.js → agenda-wNFDKn0G.js} +1 -1
- package/dist/array-CbATeQbk.js +1 -0
- package/dist/array-CvmZXzxF.mjs +108 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/{exceptions-CEXIFw47.mjs → exceptions-CLgeeUSy.mjs} +1 -1
- package/dist/{exceptions-BvMTqtof.js → exceptions-wEQEVzIs.js} +1 -1
- package/dist/floating-ui.dom-BO2Hr6mz.mjs +1292 -0
- package/dist/floating-ui.dom-CAr9LGoC.js +1 -0
- package/dist/{index-AmUV8LZQ.mjs → index-B-lVEpFX.mjs} +1 -1
- package/dist/index-BuzLn4Km.js +54 -0
- package/dist/index-C4YUVWzJ.js +75 -0
- package/dist/index-CMk3uhUt.mjs +3837 -0
- package/dist/{index-Uf7TwBuW.mjs → index-CrGjxSwa.mjs} +4 -4
- package/dist/index-D2DYuz8R.mjs +1090 -0
- package/dist/index-D3L8WAJI.js +58 -0
- package/dist/index-D7JBu6iT.mjs +34 -0
- package/dist/index-DQYBP8Js.js +158 -0
- package/dist/index-DjDCYQ_6.mjs +441 -0
- package/dist/index-DwHYfZl_.js +1 -0
- package/dist/{index-Biuv2zTx-DBCin9DT.mjs → index-N6w5-hDF-6k_ELHYC.mjs} +1234 -1234
- package/dist/index-N6w5-hDF-DCuxwPBX.js +88 -0
- package/dist/index-O_QNuTdG.js +35 -0
- package/dist/index-_2lRVt_k.mjs +2942 -0
- package/dist/index-p5Uqu8c2.mjs +1438 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +383 -86
- package/dist/{resources-DgPnEv76.mjs → resources-CFR_s89Z.mjs} +1 -1
- package/dist/src/appointments/chat-components/AppointmentDetailsCard.vue.d.ts +14 -0
- package/dist/src/appointments/chat-components/AppointmentEditor.vue.d.ts +14 -0
- package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +14 -0
- package/dist/src/appointments/index.d.ts +70 -0
- package/dist/src/appointments/server.d.ts +19 -0
- package/dist/src/appointments/tools.d.ts +56 -16
- package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Button.vue.d.ts +3 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/CustomClass.d.ts +14 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/NodeDragPointerEventsFix.d.ts +2 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuClassBuilder.vue.d.ts +19 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/BubbleMenuLinkBuilder.vue.d.ts +19 -0
- package/dist/src/googleAnalytics/chat-components/CountryBreakdownCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/DeviceBreakdownCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/PeakHoursCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/RealtimeCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/SearchTermsCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/TopPagesCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/TrafficSourcesCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/chat-components/VisitorStatsCard.vue.d.ts +14 -0
- package/dist/src/googleAnalytics/config.d.ts +39 -0
- package/dist/src/googleAnalytics/index.d.ts +116 -0
- package/dist/src/googleAnalytics/metadata.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Acquisition.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Audience.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Content.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/Overview.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/pages/SeoHealth.vue.d.ts +2 -0
- package/dist/src/googleAnalytics/permissions.d.ts +1 -0
- package/dist/src/googleAnalytics/server.d.ts +35 -0
- package/dist/src/googleAnalytics/tools.d.ts +59 -0
- package/dist/src/index.d.ts +6 -5
- package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +2 -0
- package/dist/src/mailTemplates/routes.d.ts +5 -0
- package/dist/src/mailTemplates/tools.d.ts +1 -0
- package/dist/src/productCollections/tools.d.ts +1 -0
- package/dist/src/products/chat-components/ProductDetailsCard.vue.d.ts +14 -0
- package/dist/src/products/index.d.ts +24 -2
- package/dist/src/products/server.d.ts +19 -0
- package/dist/src/products/tools.d.ts +21 -2
- package/dist/src/promoCodes/tools.d.ts +1 -0
- package/dist/src/server-handlers.d.ts +9 -0
- package/dist/src/table/tools.d.ts +1 -25
- package/package.json +23 -21
- package/src/appointments/server.ts +195 -0
- package/src/appointments/tools.ts +61 -21
- package/src/googleAnalytics/server.ts +1188 -0
- package/src/googleAnalytics/tools.ts +158 -0
- package/src/mailTemplates/tools.ts +1 -0
- package/src/productCollections/tools.ts +1 -0
- package/src/products/server.ts +146 -0
- package/src/products/tools.ts +19 -0
- package/src/promoCodes/tools.ts +1 -0
- package/src/table/tools.ts +1 -25
- package/dist/ContentEditor-LOn09n7N.js +0 -307
- package/dist/DateFormatter-Bw-SCfUS.js +0 -1
- package/dist/floating-ui.dom-CBBY0Ism.js +0 -1
- package/dist/floating-ui.dom-xfqXu4GA.mjs +0 -1138
- package/dist/index-Biuv2zTx-DHiVlXFj.js +0 -88
- package/dist/index-HLGxDG-0.mjs +0 -7746
- package/dist/index-n2p9TTRq.js +0 -245
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/DragHandle.d.ts +0 -76
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/NodeDragPointerEventsFix.d.ts +0 -7
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/drag-handle-plugin.d.ts +0 -25
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/drag-handle.d.ts +0 -50
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/cloneElement.d.ts +0 -1
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/dragHandler.d.ts +0 -2
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/findNextElementFromCursor.d.ts +0 -17
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/getComputedStyle.d.ts +0 -1
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/getInnerCoords.d.ts +0 -5
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/getOuterNode.d.ts +0 -3
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/minMax.d.ts +0 -1
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/helpers/removeNode.d.ts +0 -1
- package/dist/src/content-manager/components/content-editor/tiptap-extensions/extension-drag-handle/index.d.ts +0 -4
- package/dist/src/mail-templates/tools.d.ts +0 -25
- package/dist/src/product-collections/tools.d.ts +0 -25
- package/dist/src/promo-codes/tools.d.ts +0 -25
- package/src/mail-templates/tools.ts +0 -25
- package/src/product-collections/tools.ts +0 -25
- package/src/promo-codes/tools.ts +0 -25
- /package/dist/src/{content-manager → contentManager}/components/components/ComponentDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/components/ComponentGridItem.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/ApiDocs.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/ContentLayout.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/ContentSettings.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/ContentStructuredContentSections.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/Header.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/LivePreviewWrapper.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/Locales.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/NewSectionDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/PageSettings.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/SEO.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/SidebarSectionWrapper.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/Status.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/Versions.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/code-examples.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Button.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Card.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Card.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Column.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Column.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/ComponentEditorNode.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Container.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Container.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Divider.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Divider.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/EmptySpace.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/EmptySpace.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Heading.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Heading.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Image.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Image.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/LockBlocks.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Map.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Map.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/OnlyContainerDocument.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Paragraph.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Paragraph.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Row.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Row.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/ScopedSelectAll.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Stack.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Stack.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/TrailingNodeInContainers.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Video.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/Video.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/DetailsNodeView.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/content/details-content.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/content/index.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/details.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/helpers/findClosestVisibleNode.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/helpers/isNodeVisible.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/helpers/setGapCursor.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/index.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/summary/details-summary.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/extension-details/summary/index.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/helpers/NodeLabel.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/helpers/ResizeHandlers.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/helpers/TopMarginDragger.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/helpers/useContainerFocus.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-extensions/helpers/useFocus.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/BubbleMenuToggleButton.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/DefaultBubbleMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/EmojiMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/NewNodeView.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/SlashMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/SlashMenuButton.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/ButtonMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/CardMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/ColumnMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/DividerMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/EmptySpaceMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/HeadingMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/ImageMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/MapMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/RowMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/StackMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/TextMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/VideoMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/overview/CollectionDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/overview/CollectionsGridView.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/overview/ContentEntryContextMenu.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/overview/FilterPopover.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/overview/ListView.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/styling/ButtonStyleDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/styling/CardStyleDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/components/styling/SectionStyleDialog.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/config.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/index.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/index.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/metadata.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/pages/Components.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/pages/ContentEditor.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/pages/Entries.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/pages/GlobalStyling.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/pages/Overview.vue.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/permissions.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/routes.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/stores/useTableStore.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/tools.d.ts +0 -0
- /package/dist/src/{content-manager → contentManager}/types.d.ts +0 -0
- /package/dist/src/{mail-templates/components/TemplateList.vue.d.ts → googleAnalytics/index.vue.d.ts} +0 -0
- /package/dist/src/{mail-templates → googleAnalytics}/routes.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/config.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/index.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/index.vue.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/metadata.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/pages/Detail.vue.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/pages/Overview.vue.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/permissions.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/stores/useTableStore.d.ts +0 -0
- /package/dist/src/{mail-templates → mailTemplates}/types.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/components/detail/Main.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/components/detail/SEO.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/components/detail/Status.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/components/overview/ListView.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/composables/useTable.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/config.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/index.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/index.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/metadata.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/pages/Detail.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/pages/Overview.vue.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/permissions.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/routes.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/stores/useTableStore.d.ts +0 -0
- /package/dist/src/{product-collections → productCollections}/types.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/DateRange.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/MultiCodes.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/Note.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/SingleCode.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/TypeAndValue/TypeDetailDialog.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/TypeAndValue/TypeManageDialog.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/components/create/TypeAndValue/index.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/config.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/index.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/index.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/metadata.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/pages/Create.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/pages/Detail.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/pages/Find.vue.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/permissions.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/routes.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/stores/useTableStore.d.ts +0 -0
- /package/dist/src/{promo-codes → promoCodes}/types.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/components/detail/Condition.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/components/detail/Countries.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/components/detail/Example.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/components/detail/Main.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/components/overview/ListView.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/composables/useTable.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/config.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/index.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/index.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/metadata.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/pages/Detail.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/pages/Overview.vue.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/permissions.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/routes.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/stores/useTableStore.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/tools.d.ts +0 -0
- /package/dist/src/{shipping-options → shippingOptions}/types.d.ts +0 -0
- /package/src/{content-manager → contentManager}/tools.ts +0 -0
- /package/src/{shipping-options → shippingOptions}/tools.ts +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const tools: ({
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
executionMode: string;
|
|
5
|
+
chatComponent: string;
|
|
6
|
+
parameters: {
|
|
7
|
+
type: string;
|
|
8
|
+
properties: {
|
|
9
|
+
startDate: {
|
|
10
|
+
type: string;
|
|
11
|
+
description: string;
|
|
12
|
+
};
|
|
13
|
+
endDate: {
|
|
14
|
+
type: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
limit: {
|
|
18
|
+
type: string;
|
|
19
|
+
description: string;
|
|
20
|
+
default: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
required: never[];
|
|
24
|
+
};
|
|
25
|
+
} | {
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
executionMode: string;
|
|
29
|
+
chatComponent: string;
|
|
30
|
+
parameters: {
|
|
31
|
+
type: string;
|
|
32
|
+
properties: {
|
|
33
|
+
startDate: {
|
|
34
|
+
type: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
endDate: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
limit?: undefined;
|
|
42
|
+
};
|
|
43
|
+
required: never[];
|
|
44
|
+
};
|
|
45
|
+
} | {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
executionMode: string;
|
|
49
|
+
chatComponent: string;
|
|
50
|
+
parameters: {
|
|
51
|
+
type: string;
|
|
52
|
+
properties: {
|
|
53
|
+
startDate?: undefined;
|
|
54
|
+
endDate?: undefined;
|
|
55
|
+
limit?: undefined;
|
|
56
|
+
};
|
|
57
|
+
required: never[];
|
|
58
|
+
};
|
|
59
|
+
})[];
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export { default as table } from './table';
|
|
2
2
|
export { default as products } from './products';
|
|
3
3
|
export { default as custom } from './custom';
|
|
4
|
-
export { default as promoCodes } from './
|
|
5
|
-
export { default as productCollections } from './
|
|
6
|
-
export { default as shippingOptions } from './
|
|
7
|
-
export { default as
|
|
8
|
-
export { default as
|
|
4
|
+
export { default as promoCodes } from './promoCodes';
|
|
5
|
+
export { default as productCollections } from './productCollections';
|
|
6
|
+
export { default as shippingOptions } from './shippingOptions';
|
|
7
|
+
export { default as googleAnalytics } from './googleAnalytics';
|
|
8
|
+
export { default as contentManager } from './contentManager';
|
|
9
|
+
export { default as mailTemplates } from './mailTemplates';
|
|
9
10
|
export { default as appointments } from './appointments';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tools: never[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tools: never[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
toolName: string;
|
|
3
|
+
instanceId: string;
|
|
4
|
+
instanceName: string;
|
|
5
|
+
moduleType: string;
|
|
6
|
+
resolvedArgs: Record<string, any>;
|
|
7
|
+
status: 'pending' | 'running' | 'completed' | 'error';
|
|
8
|
+
};
|
|
9
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
10
|
+
submit: (result: any) => any;
|
|
11
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
12
|
+
onSubmit?: ((result: any) => any) | undefined;
|
|
13
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
14
|
+
export default _default;
|
|
@@ -73,9 +73,10 @@ declare const _default: {
|
|
|
73
73
|
name: string;
|
|
74
74
|
description: string;
|
|
75
75
|
}[];
|
|
76
|
-
tools: {
|
|
76
|
+
tools: ({
|
|
77
77
|
name: string;
|
|
78
78
|
description: string;
|
|
79
|
+
executionMode: string;
|
|
79
80
|
parameters: {
|
|
80
81
|
type: string;
|
|
81
82
|
properties: {
|
|
@@ -83,9 +84,30 @@ declare const _default: {
|
|
|
83
84
|
type: string;
|
|
84
85
|
description: string;
|
|
85
86
|
};
|
|
87
|
+
productId?: undefined;
|
|
86
88
|
};
|
|
87
89
|
required: string[];
|
|
88
90
|
};
|
|
89
|
-
|
|
91
|
+
chatComponent?: undefined;
|
|
92
|
+
} | {
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
executionMode: string;
|
|
96
|
+
chatComponent: string;
|
|
97
|
+
parameters: {
|
|
98
|
+
type: string;
|
|
99
|
+
properties: {
|
|
100
|
+
productId: {
|
|
101
|
+
type: string;
|
|
102
|
+
description: string;
|
|
103
|
+
};
|
|
104
|
+
category?: undefined;
|
|
105
|
+
};
|
|
106
|
+
required: string[];
|
|
107
|
+
};
|
|
108
|
+
})[];
|
|
109
|
+
chatComponents: {
|
|
110
|
+
ProductDetailsCard: () => Promise<typeof import("./chat-components/ProductDetailsCard.vue")>;
|
|
111
|
+
};
|
|
90
112
|
};
|
|
91
113
|
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependencies injected by the CMS when creating this handler.
|
|
3
|
+
* Modules never import CMS internals directly — they receive them here.
|
|
4
|
+
*/
|
|
5
|
+
export interface ModuleHandlerDeps {
|
|
6
|
+
/** Initialize a Firebase Admin app for a project-level integration */
|
|
7
|
+
initFirebase: (event: any, integrationId: string) => Promise<any>;
|
|
8
|
+
/** Normalize Firestore Timestamp fields to plain dates */
|
|
9
|
+
normalizeTimestamps: (data: any) => any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Products module server handler factory.
|
|
13
|
+
*
|
|
14
|
+
* Routes (relative to `/api/v1/modules/:instanceId/`):
|
|
15
|
+
* GET /products → list all products
|
|
16
|
+
* GET /products/:productId → get single product
|
|
17
|
+
* GET /empty-stock → get products with 0 stock (API-mode tool)
|
|
18
|
+
*/
|
|
19
|
+
export declare function createServerHandler(deps: ModuleHandlerDeps): any;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export declare const tools: {
|
|
1
|
+
export declare const tools: ({
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
|
+
executionMode: string;
|
|
4
5
|
parameters: {
|
|
5
6
|
type: string;
|
|
6
7
|
properties: {
|
|
@@ -8,7 +9,25 @@ export declare const tools: {
|
|
|
8
9
|
type: string;
|
|
9
10
|
description: string;
|
|
10
11
|
};
|
|
12
|
+
productId?: undefined;
|
|
11
13
|
};
|
|
12
14
|
required: string[];
|
|
13
15
|
};
|
|
14
|
-
|
|
16
|
+
chatComponent?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
executionMode: string;
|
|
21
|
+
chatComponent: string;
|
|
22
|
+
parameters: {
|
|
23
|
+
type: string;
|
|
24
|
+
properties: {
|
|
25
|
+
productId: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
category?: undefined;
|
|
30
|
+
};
|
|
31
|
+
required: string[];
|
|
32
|
+
};
|
|
33
|
+
})[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tools: never[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server handler barrel — re-exports every module's server factory.
|
|
3
|
+
*
|
|
4
|
+
* When you add a `server.ts` to a module, just add one export line here.
|
|
5
|
+
* The CMS will auto-discover and register it.
|
|
6
|
+
*/
|
|
7
|
+
export { createServerHandler as products } from './products/server';
|
|
8
|
+
export { createServerHandler as appointments } from './appointments/server';
|
|
9
|
+
export { createServerHandler as googleAnalytics } from './googleAnalytics/server';
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
export declare const tools:
|
|
2
|
-
getData: {
|
|
3
|
-
description: string;
|
|
4
|
-
params: {
|
|
5
|
-
size: {
|
|
6
|
-
type: string;
|
|
7
|
-
default: number;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
returns: {
|
|
11
|
-
type: string;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
filterTable: {
|
|
15
|
-
description: string;
|
|
16
|
-
params: {
|
|
17
|
-
filter: {
|
|
18
|
-
type: string;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
returns: {
|
|
22
|
-
type: string;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
};
|
|
1
|
+
export declare const tools: never[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneclick.dev/cms-core-modules",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.72",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
"require": "./dist/index.cjs.js",
|
|
11
11
|
"types": "./dist/index.d.ts"
|
|
12
12
|
},
|
|
13
|
-
"./dist/cms-core-modules.css": "./dist/cms-core-modules.css"
|
|
13
|
+
"./dist/cms-core-modules.css": "./dist/cms-core-modules.css",
|
|
14
|
+
"./server-handlers": "./src/server-handlers.ts"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
16
17
|
"dist",
|
|
17
|
-
"src/*/tools.ts"
|
|
18
|
+
"src/*/tools.ts",
|
|
19
|
+
"src/*/server.ts"
|
|
18
20
|
],
|
|
19
21
|
"sideEffects": false,
|
|
20
22
|
"scripts": {
|
|
@@ -23,7 +25,7 @@
|
|
|
23
25
|
"peerDependencies": {
|
|
24
26
|
"@formkit/drag-and-drop": "^0.5.3",
|
|
25
27
|
"@internationalized/date": "^3.8.0",
|
|
26
|
-
"@oneclick.dev/cms-kit": "0.0.
|
|
28
|
+
"@oneclick.dev/cms-kit": "0.0.84",
|
|
27
29
|
"@tanstack/vue-table": "^8.21.3",
|
|
28
30
|
"@vee-validate/zod": "^4.15.0",
|
|
29
31
|
"@vue-flow/core": "^1.48.1",
|
|
@@ -42,9 +44,9 @@
|
|
|
42
44
|
},
|
|
43
45
|
"devDependencies": {
|
|
44
46
|
"@floating-ui/dom": "^1.7.4",
|
|
45
|
-
"@tiptap/extension-collaboration": "3.
|
|
46
|
-
"@tiptap/extension-node-range": "3.
|
|
47
|
-
"@tiptap/y-tiptap": "3.0.
|
|
47
|
+
"@tiptap/extension-collaboration": "3.20.0",
|
|
48
|
+
"@tiptap/extension-node-range": "3.20.0",
|
|
49
|
+
"@tiptap/y-tiptap": "3.0.2",
|
|
48
50
|
"@vitejs/plugin-vue": "^6.0.3",
|
|
49
51
|
"@vue-flow/core": "^1.48.1",
|
|
50
52
|
"typescript": "^5.9.3",
|
|
@@ -52,19 +54,20 @@
|
|
|
52
54
|
"vite-plugin-dts": "^4.5.4"
|
|
53
55
|
},
|
|
54
56
|
"dependencies": {
|
|
55
|
-
"@tiptap/core": "3.
|
|
56
|
-
"@tiptap/extension-bubble-menu": "
|
|
57
|
-
"@tiptap/extension-collaboration": "3.
|
|
58
|
-
"@tiptap/extension-collaboration-caret": "3.
|
|
59
|
-
"@tiptap/extension-document": "3.
|
|
60
|
-
"@tiptap/extension-
|
|
61
|
-
"@tiptap/extension-
|
|
62
|
-
"@tiptap/extension-
|
|
63
|
-
"@tiptap/
|
|
64
|
-
"@tiptap/
|
|
65
|
-
"@tiptap/
|
|
66
|
-
"@tiptap/
|
|
67
|
-
"@tiptap/
|
|
57
|
+
"@tiptap/core": "3.20.0",
|
|
58
|
+
"@tiptap/extension-bubble-menu": "3.20.0",
|
|
59
|
+
"@tiptap/extension-collaboration": "3.20.0",
|
|
60
|
+
"@tiptap/extension-collaboration-caret": "3.20.0",
|
|
61
|
+
"@tiptap/extension-document": "3.20.0",
|
|
62
|
+
"@tiptap/extension-link": "^3.20.0",
|
|
63
|
+
"@tiptap/extension-node-range": "3.20.0",
|
|
64
|
+
"@tiptap/extension-underline": "3.20.0",
|
|
65
|
+
"@tiptap/extension-unique-id": "3.20.0",
|
|
66
|
+
"@tiptap/extensions": "3.20.0",
|
|
67
|
+
"@tiptap/pm": "3.20.0",
|
|
68
|
+
"@tiptap/starter-kit": "3.20.0",
|
|
69
|
+
"@tiptap/vue-3": "3.20.0",
|
|
70
|
+
"@tiptap/y-tiptap": "3.0.2",
|
|
68
71
|
"@unovis/ts": "^1.5.2",
|
|
69
72
|
"@unovis/vue": "^1.5.2",
|
|
70
73
|
"iso-639-1": "^3.1.5",
|
|
@@ -72,7 +75,6 @@
|
|
|
72
75
|
"prosemirror-model": "^1.25.4",
|
|
73
76
|
"prosemirror-state": "^1.4.4",
|
|
74
77
|
"tiptap-extension-auto-joiner": "0.1.3",
|
|
75
|
-
"tiptap-extension-global-drag-handle": "0.1.18",
|
|
76
78
|
"unplugin-auto-import": "^20.3.0",
|
|
77
79
|
"vue-grid-layout-v3": "^3.1.2",
|
|
78
80
|
"world-countries": "^5.1.0",
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { createRouter, defineEventHandler, createError, getRouterParam, getQuery } from 'h3'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dependencies injected by the CMS when creating this handler.
|
|
5
|
+
* Modules never import CMS internals directly — they receive them here.
|
|
6
|
+
*/
|
|
7
|
+
export interface ModuleHandlerDeps {
|
|
8
|
+
/** Initialize a Firebase Admin app for a project-level integration */
|
|
9
|
+
initFirebase: (event: any, integrationId: string) => Promise<any>
|
|
10
|
+
/** Normalize Firestore Timestamp fields to plain dates */
|
|
11
|
+
normalizeTimestamps: (data: any) => any
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Appointments module server handler factory.
|
|
16
|
+
*
|
|
17
|
+
* Routes (relative to `/api/v1/modules/:instanceId/`):
|
|
18
|
+
* GET /appointments → list recent appointments/reservations
|
|
19
|
+
* GET /appointments/find → find appointment by name, email, date
|
|
20
|
+
* GET /appointments/:appointmentId → get single appointment/reservation
|
|
21
|
+
*/
|
|
22
|
+
export function createServerHandler(deps: ModuleHandlerDeps) {
|
|
23
|
+
const { initFirebase, normalizeTimestamps } = deps
|
|
24
|
+
const router = createRouter()
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the Firebase app + collection names from the module instance config.
|
|
28
|
+
*/
|
|
29
|
+
async function getFirebaseContext(event: any) {
|
|
30
|
+
const { supabase, instanceId } = event.context.module
|
|
31
|
+
|
|
32
|
+
const { data: moduleRow, error } = await supabase
|
|
33
|
+
.from('project_modules')
|
|
34
|
+
.select('config')
|
|
35
|
+
.eq('id', instanceId)
|
|
36
|
+
.single()
|
|
37
|
+
|
|
38
|
+
if (error || !moduleRow?.config) {
|
|
39
|
+
throw createError({ statusCode: 500, statusMessage: 'Failed to load module config.' })
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const config = moduleRow.config as Record<string, any>
|
|
43
|
+
const integrationId = config.project as string
|
|
44
|
+
const reservationsCollection = (config.reservationsCollection as string) || 'bookings_orders'
|
|
45
|
+
const agendaCollection = (config.agendaCollection as string) || 'agendas'
|
|
46
|
+
|
|
47
|
+
if (!integrationId) {
|
|
48
|
+
throw createError({ statusCode: 400, statusMessage: 'Appointments module has no Firebase integration configured.' })
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const firebase = await initFirebase(event, integrationId)
|
|
52
|
+
return { firebase, reservationsCollection, agendaCollection }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Flatten a booking order into individual reservation rows for the response.
|
|
57
|
+
*/
|
|
58
|
+
function flattenOrder(order: any) {
|
|
59
|
+
const reservations = order.reservations || []
|
|
60
|
+
return reservations.map((res: any) => ({
|
|
61
|
+
orderId: order.id,
|
|
62
|
+
reservationId: res.id,
|
|
63
|
+
customerInfo: order.customerInfo,
|
|
64
|
+
date: res.date,
|
|
65
|
+
startTime: res.timeslot?.startTime,
|
|
66
|
+
endTime: res.timeslot?.endTime,
|
|
67
|
+
spots: res.spots,
|
|
68
|
+
status: order.status,
|
|
69
|
+
reservationStatus: res.status,
|
|
70
|
+
resourceId: res.resourceId,
|
|
71
|
+
reservationPrice: res.totalPrice,
|
|
72
|
+
reservationBasePrice: res.basePrice,
|
|
73
|
+
reservationAddOnsPrice: res.addOnsPrice,
|
|
74
|
+
pricingOption: res.pricingOption,
|
|
75
|
+
amountDue: order.amountDue,
|
|
76
|
+
amountPaid: order.amountPaid,
|
|
77
|
+
createdAt: order.createdAt,
|
|
78
|
+
}))
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// ── GET /appointments (recent) ─────────────────────
|
|
82
|
+
router.get('/appointments', defineEventHandler(async (event) => {
|
|
83
|
+
const query = getQuery(event)
|
|
84
|
+
const limit = Math.min(Number(query.quantity) || 20, 100)
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const { firebase, reservationsCollection } = await getFirebaseContext(event)
|
|
88
|
+
|
|
89
|
+
const snapshot = await firebase
|
|
90
|
+
.firestore()
|
|
91
|
+
.collection(reservationsCollection)
|
|
92
|
+
.orderBy('createdAt', 'desc')
|
|
93
|
+
.limit(limit)
|
|
94
|
+
.get()
|
|
95
|
+
|
|
96
|
+
const appointments = snapshot.docs.flatMap((doc: any) =>
|
|
97
|
+
flattenOrder(normalizeTimestamps({ id: doc.id, ...doc.data() }))
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
count: appointments.length,
|
|
102
|
+
appointments,
|
|
103
|
+
}
|
|
104
|
+
} catch (err: any) {
|
|
105
|
+
console.error('Appointments handler — list error:', err)
|
|
106
|
+
throw createError({
|
|
107
|
+
statusCode: err.statusCode || 500,
|
|
108
|
+
statusMessage: err.statusMessage || 'Failed to list appointments',
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
}))
|
|
112
|
+
|
|
113
|
+
// ── GET /appointments/find?name=&email=&date= ──────
|
|
114
|
+
router.get('/appointments/find', defineEventHandler(async (event) => {
|
|
115
|
+
const query = getQuery(event)
|
|
116
|
+
const name = (query.name as string || '').toLowerCase().trim()
|
|
117
|
+
const email = (query.email as string || '').toLowerCase().trim()
|
|
118
|
+
const date = query.date as string | undefined // YYYY-MM-DD
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
const { firebase, reservationsCollection } = await getFirebaseContext(event)
|
|
122
|
+
|
|
123
|
+
// Build Firestore query — we always have at least a date
|
|
124
|
+
let fbQuery: FirebaseFirestore.Query = firebase.firestore().collection(reservationsCollection)
|
|
125
|
+
|
|
126
|
+
// If an email is provided, use it as a server-side filter (exact match on Firestore)
|
|
127
|
+
if (email) {
|
|
128
|
+
fbQuery = fbQuery.where('customerInfo.email', '==', email)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const snapshot = await fbQuery.orderBy('createdAt', 'desc').limit(200).get()
|
|
132
|
+
|
|
133
|
+
let results = snapshot.docs.flatMap((doc: any) =>
|
|
134
|
+
flattenOrder(normalizeTimestamps({ id: doc.id, ...doc.data() }))
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
// Client-side filter: date (reservation date, not order date)
|
|
138
|
+
if (date) {
|
|
139
|
+
results = results.filter((r: any) => r.date === date)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Client-side filter: name (fuzzy — first or last name contains)
|
|
143
|
+
if (name) {
|
|
144
|
+
results = results.filter((r: any) => {
|
|
145
|
+
const first = (r.customerInfo?.firstName || '').toLowerCase()
|
|
146
|
+
const last = (r.customerInfo?.lastName || '').toLowerCase()
|
|
147
|
+
return first.includes(name) || last.includes(name) || `${first} ${last}`.includes(name)
|
|
148
|
+
})
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return {
|
|
152
|
+
count: results.length,
|
|
153
|
+
appointments: results,
|
|
154
|
+
}
|
|
155
|
+
} catch (err: any) {
|
|
156
|
+
console.error('Appointments handler — find error:', err)
|
|
157
|
+
throw createError({
|
|
158
|
+
statusCode: err.statusCode || 500,
|
|
159
|
+
statusMessage: err.statusMessage || 'Failed to find appointments',
|
|
160
|
+
})
|
|
161
|
+
}
|
|
162
|
+
}))
|
|
163
|
+
|
|
164
|
+
// ── GET /appointments/:appointmentId ───────────────
|
|
165
|
+
router.get('/appointments/:appointmentId', defineEventHandler(async (event) => {
|
|
166
|
+
const appointmentId = getRouterParam(event, 'appointmentId')
|
|
167
|
+
if (!appointmentId) {
|
|
168
|
+
throw createError({ statusCode: 400, statusMessage: 'Appointment ID is required.' })
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
try {
|
|
172
|
+
const { firebase, reservationsCollection } = await getFirebaseContext(event)
|
|
173
|
+
console.log('Fetching appointment with ID:', appointmentId, reservationsCollection)
|
|
174
|
+
const snapshot = await firebase.firestore().collection(reservationsCollection).doc(appointmentId).get()
|
|
175
|
+
|
|
176
|
+
if (!snapshot.exists) {
|
|
177
|
+
throw createError({ statusCode: 404, statusMessage: 'Appointment not found.' })
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const order = normalizeTimestamps({ id: snapshot.id, ...snapshot.data() })
|
|
181
|
+
return {
|
|
182
|
+
...order,
|
|
183
|
+
reservations: flattenOrder(order),
|
|
184
|
+
}
|
|
185
|
+
} catch (err: any) {
|
|
186
|
+
console.error('Appointments handler — get error:', err)
|
|
187
|
+
throw createError({
|
|
188
|
+
statusCode: err.statusCode || 500,
|
|
189
|
+
statusMessage: err.statusMessage || 'Failed to get appointment',
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
}))
|
|
193
|
+
|
|
194
|
+
return router.handler
|
|
195
|
+
}
|
|
@@ -1,25 +1,65 @@
|
|
|
1
|
-
export const tools =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
export const tools = [
|
|
2
|
+
{
|
|
3
|
+
name: "findAppointment",
|
|
4
|
+
description: 'Show a card in chat with details of an appointment/booking/reservation/...',
|
|
5
|
+
executionMode: 'component',
|
|
6
|
+
chatComponent: 'AppointmentDetailsCard',
|
|
7
|
+
parameters: {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
name: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "Name of the booker"
|
|
13
|
+
},
|
|
14
|
+
email: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Email of the booker"
|
|
17
|
+
},
|
|
18
|
+
date: {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "Date of the appointment (YYYY-MM-DD)"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
required: [
|
|
24
|
+
"date"
|
|
25
|
+
]
|
|
12
26
|
}
|
|
13
27
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
{
|
|
29
|
+
name: "getRecentAppointments",
|
|
30
|
+
description: 'Show a table in chat with recent appointments, default loading the latest 20 appointments.',
|
|
31
|
+
executionMode: 'component',
|
|
32
|
+
chatComponent: 'AppointmentListTable',
|
|
33
|
+
parameters: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
quantity: {
|
|
37
|
+
type: "number",
|
|
38
|
+
description: "Number of appointments to load. default: 20 max: 100",
|
|
39
|
+
default: 20 // TODO implement default (and min/max?)
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
required: [
|
|
43
|
+
"quantity"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "changeAppointmentDetails",
|
|
49
|
+
description: 'Show a card in chat where user can edit name, email and date of an existing appointment.',
|
|
50
|
+
executionMode: 'component',
|
|
51
|
+
chatComponent: 'AppointmentEditor',
|
|
52
|
+
parameters: {
|
|
53
|
+
type: "object",
|
|
54
|
+
properties: {
|
|
55
|
+
orderId: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "ID of the order / appointment. This is NOT the reservation ID."
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
required: [
|
|
61
|
+
"orderId"
|
|
62
|
+
]
|
|
23
63
|
}
|
|
24
64
|
}
|
|
25
|
-
|
|
65
|
+
]
|