flowrix 1.0.0
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/LICENSE +18 -0
- package/README.md +84 -0
- package/dist/module.d.mts +8 -0
- package/dist/module.json +9 -0
- package/dist/module.mjs +273 -0
- package/dist/runtime/composables/Blog/useBlogIndex.d.ts +111 -0
- package/dist/runtime/composables/Blog/useBlogIndex.js +86 -0
- package/dist/runtime/composables/Blog/useBlogMain.d.ts +13 -0
- package/dist/runtime/composables/Blog/useBlogMain.js +7 -0
- package/dist/runtime/composables/Blog/useBlogSidebar.d.ts +7 -0
- package/dist/runtime/composables/Blog/useBlogSidebar.js +37 -0
- package/dist/runtime/composables/Blog/useBlogSingle.d.ts +30 -0
- package/dist/runtime/composables/Blog/useBlogSingle.js +87 -0
- package/dist/runtime/composables/Blog/useMagazineCard.d.ts +13 -0
- package/dist/runtime/composables/Blog/useMagazineCard.js +14 -0
- package/dist/runtime/composables/Blog/useSingleBlogMain.d.ts +20 -0
- package/dist/runtime/composables/Blog/useSingleBlogMain.js +28 -0
- package/dist/runtime/composables/Brand/brand.d.ts +7 -0
- package/dist/runtime/composables/Brand/brand.js +45 -0
- package/dist/runtime/composables/Cart/useCartDetail.d.ts +49 -0
- package/dist/runtime/composables/Cart/useCartDetail.js +48 -0
- package/dist/runtime/composables/Category/useCategoryContent.d.ts +9 -0
- package/dist/runtime/composables/Category/useCategoryContent.js +15 -0
- package/dist/runtime/composables/Category/useCategoryGrid.d.ts +40 -0
- package/dist/runtime/composables/Category/useCategoryGrid.js +38 -0
- package/dist/runtime/composables/Category/useCategoryIndex.d.ts +33 -0
- package/dist/runtime/composables/Category/useCategoryIndex.js +65 -0
- package/dist/runtime/composables/Category/useCategoryTemplate2.d.ts +50 -0
- package/dist/runtime/composables/Category/useCategoryTemplate2.js +43 -0
- package/dist/runtime/composables/Category/useCategoryTemplate3.d.ts +66 -0
- package/dist/runtime/composables/Category/useCategoryTemplate3.js +45 -0
- package/dist/runtime/composables/Category/useCategoryTop.d.ts +18 -0
- package/dist/runtime/composables/Category/useCategoryTop.js +65 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useDirectDeposit.d.ts +3 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useDirectDeposit.js +22 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useEway.d.ts +8 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useEway.js +88 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.d.ts +13 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.js +155 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.d.ts +9 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.js +90 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.d.ts +15 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.js +146 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaypal.d.ts +3 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaypal.js +22 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.d.ts +7 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.js +43 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useZippay.d.ts +3 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useZippay.js +22 -0
- package/dist/runtime/composables/Checkout/useBillingAddress.d.ts +19 -0
- package/dist/runtime/composables/Checkout/useBillingAddress.js +82 -0
- package/dist/runtime/composables/Checkout/useCheckout.d.ts +186 -0
- package/dist/runtime/composables/Checkout/useCheckout.js +366 -0
- package/dist/runtime/composables/Checkout/useCreateAccount.d.ts +15 -0
- package/dist/runtime/composables/Checkout/useCreateAccount.js +61 -0
- package/dist/runtime/composables/Checkout/useDeliveryMethod.d.ts +4 -0
- package/dist/runtime/composables/Checkout/useDeliveryMethod.js +36 -0
- package/dist/runtime/composables/Checkout/useShippingAddress.d.ts +9 -0
- package/dist/runtime/composables/Checkout/useShippingAddress.js +121 -0
- package/dist/runtime/composables/Customer/useRegister.d.ts +18 -0
- package/dist/runtime/composables/Customer/useRegister.js +48 -0
- package/dist/runtime/composables/Extras/useCountry.d.ts +6 -0
- package/dist/runtime/composables/Extras/useCountry.js +11 -0
- package/dist/runtime/composables/Extras/useDateFormatter.d.ts +4 -0
- package/dist/runtime/composables/Extras/useDateFormatter.js +20 -0
- package/dist/runtime/composables/Extras/useNumberOnly.d.ts +5 -0
- package/dist/runtime/composables/Extras/useNumberOnly.js +21 -0
- package/dist/runtime/composables/Extras/usePasswordFormatter.d.ts +8 -0
- package/dist/runtime/composables/Extras/usePasswordFormatter.js +61 -0
- package/dist/runtime/composables/Extras/useSrcSets.d.ts +8 -0
- package/dist/runtime/composables/Extras/useSrcSets.js +26 -0
- package/dist/runtime/composables/Extras/useTogglePassword.d.ts +4 -0
- package/dist/runtime/composables/Extras/useTogglePassword.js +11 -0
- package/dist/runtime/composables/Footer/useFooter.d.ts +14 -0
- package/dist/runtime/composables/Footer/useFooter.js +61 -0
- package/dist/runtime/composables/Header/useHeader.d.ts +28 -0
- package/dist/runtime/composables/Header/useHeader.js +66 -0
- package/dist/runtime/composables/Menu/MainMenu.d.ts +4 -0
- package/dist/runtime/composables/Menu/MainMenu.js +17 -0
- package/dist/runtime/composables/Product/CustomProduct/useAttributeType.d.ts +3 -0
- package/dist/runtime/composables/Product/CustomProduct/useAttributeType.js +20 -0
- package/dist/runtime/composables/Product/CustomProduct/useAttributes.d.ts +70 -0
- package/dist/runtime/composables/Product/CustomProduct/useAttributes.js +68 -0
- package/dist/runtime/composables/Product/CustomProduct/useCustomProduct.d.ts +74 -0
- package/dist/runtime/composables/Product/CustomProduct/useCustomProduct.js +107 -0
- package/dist/runtime/composables/Product/CustomProduct/useCustomeScript.d.ts +159 -0
- package/dist/runtime/composables/Product/CustomProduct/useCustomeScript.js +2080 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleAttribute.d.ts +4 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleAttribute.js +27 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleStep.d.ts +68 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleStep.js +21 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleValue.d.ts +67 -0
- package/dist/runtime/composables/Product/CustomProduct/useSingleValue.js +15 -0
- package/dist/runtime/composables/Product/CustomProduct/useSteps.d.ts +74 -0
- package/dist/runtime/composables/Product/CustomProduct/useSteps.js +78 -0
- package/dist/runtime/composables/Product/simpleProduct/useSimpleProduct.d.ts +25 -0
- package/dist/runtime/composables/Product/simpleProduct/useSimpleProduct.js +77 -0
- package/dist/runtime/composables/Product/useProductCard.d.ts +13 -0
- package/dist/runtime/composables/Product/useProductCard.js +88 -0
- package/dist/runtime/composables/Product/useProductComponent.d.ts +5 -0
- package/dist/runtime/composables/Product/useProductComponent.js +21 -0
- package/dist/runtime/composables/Product/useProductSlug.d.ts +1 -0
- package/dist/runtime/composables/Product/useProductSlug.js +25 -0
- package/dist/runtime/composables/Product/useService.d.ts +17 -0
- package/dist/runtime/composables/Product/useService.js +67 -0
- package/dist/runtime/composables/Product/useTemplate.d.ts +5 -0
- package/dist/runtime/composables/Product/useTemplate.js +21 -0
- package/dist/runtime/composables/Samples/useSamples.d.ts +10 -0
- package/dist/runtime/composables/Samples/useSamples.js +36 -0
- package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +6 -0
- package/dist/runtime/composables/SideBar/Filters/useFilters.js +51 -0
- package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +5 -0
- package/dist/runtime/composables/SideBar/Filters/useSorting.js +27 -0
- package/dist/runtime/composables/SideBar/useSideBar.d.ts +8 -0
- package/dist/runtime/composables/SideBar/useSideBar.js +68 -0
- package/dist/runtime/composables/index.d.ts +74 -0
- package/dist/runtime/composables/index.js +74 -0
- package/dist/runtime/composables/types.d.ts +5 -0
- package/dist/runtime/composables/types.js +0 -0
- package/dist/runtime/composables/useAddToCart.d.ts +28 -0
- package/dist/runtime/composables/useAddToCart.js +114 -0
- package/dist/runtime/composables/useAddresses.d.ts +18 -0
- package/dist/runtime/composables/useAddresses.js +126 -0
- package/dist/runtime/composables/useAuth.d.ts +45 -0
- package/dist/runtime/composables/useAuth.js +180 -0
- package/dist/runtime/composables/useCards.d.ts +19 -0
- package/dist/runtime/composables/useCards.js +73 -0
- package/dist/runtime/composables/useClientApi.d.ts +23 -0
- package/dist/runtime/composables/useClientApi.js +53 -0
- package/dist/runtime/composables/useCountries.d.ts +12 -0
- package/dist/runtime/composables/useCountries.js +50 -0
- package/dist/runtime/composables/useDataLayer.d.ts +18 -0
- package/dist/runtime/composables/useDataLayer.js +385 -0
- package/dist/runtime/composables/useDynamicHtmlRenderer.d.ts +4 -0
- package/dist/runtime/composables/useDynamicHtmlRenderer.js +33 -0
- package/dist/runtime/composables/useLocation.d.ts +23 -0
- package/dist/runtime/composables/useLocation.js +32 -0
- package/dist/runtime/composables/useLocations.d.ts +12 -0
- package/dist/runtime/composables/useLocations.js +53 -0
- package/dist/runtime/composables/useMetaLayer.d.ts +10 -0
- package/dist/runtime/composables/useMetaLayer.js +263 -0
- package/dist/runtime/composables/useOrders.d.ts +21 -0
- package/dist/runtime/composables/useOrders.js +82 -0
- package/dist/runtime/composables/useQuotations.d.ts +14 -0
- package/dist/runtime/composables/useQuotations.js +50 -0
- package/dist/runtime/composables/useSearch.d.ts +7 -0
- package/dist/runtime/composables/useSearch.js +40 -0
- package/dist/runtime/composables/useSubscriptions.d.ts +13 -0
- package/dist/runtime/composables/useSubscriptions.js +58 -0
- package/dist/runtime/composables/useTikTokDatalayer.d.ts +8 -0
- package/dist/runtime/composables/useTikTokDatalayer.js +165 -0
- package/dist/runtime/composables/useWebforms.d.ts +16 -0
- package/dist/runtime/composables/useWebforms.js +75 -0
- package/dist/runtime/composables/useWishlists.d.ts +38 -0
- package/dist/runtime/composables/useWishlists.js +191 -0
- package/dist/runtime/middleware/flowrix.d.ts +6 -0
- package/dist/runtime/middleware/flowrix.js +40 -0
- package/dist/runtime/plugin.d.ts +2 -0
- package/dist/runtime/plugin.js +4 -0
- package/dist/runtime/plugins/persistedstate.client.d.ts +2 -0
- package/dist/runtime/plugins/persistedstate.client.js +9 -0
- package/dist/runtime/server/api/albums.d.ts +2 -0
- package/dist/runtime/server/api/albums.js +18 -0
- package/dist/runtime/server/api/auth/forgot.d.ts +5 -0
- package/dist/runtime/server/api/auth/forgot.js +44 -0
- package/dist/runtime/server/api/auth/login.d.ts +11 -0
- package/dist/runtime/server/api/auth/login.js +69 -0
- package/dist/runtime/server/api/auth/logout.d.ts +5 -0
- package/dist/runtime/server/api/auth/logout.js +23 -0
- package/dist/runtime/server/api/auth/register.d.ts +2 -0
- package/dist/runtime/server/api/auth/register.js +51 -0
- package/dist/runtime/server/api/auth/session.get.d.ts +2 -0
- package/dist/runtime/server/api/auth/session.get.js +46 -0
- package/dist/runtime/server/api/auth/user/reset-password.d.ts +5 -0
- package/dist/runtime/server/api/auth/user/reset-password.js +40 -0
- package/dist/runtime/server/api/auth/user/session.d.ts +2 -0
- package/dist/runtime/server/api/auth/user/session.js +43 -0
- package/dist/runtime/server/api/auth/user/verify-token.d.ts +6 -0
- package/dist/runtime/server/api/auth/user/verify-token.js +50 -0
- package/dist/runtime/server/api/banners.d.ts +3 -0
- package/dist/runtime/server/api/banners.js +41 -0
- package/dist/runtime/server/api/blog/[slug].d.ts +3 -0
- package/dist/runtime/server/api/blog/[slug].js +51 -0
- package/dist/runtime/server/api/blog/blog.d.ts +3 -0
- package/dist/runtime/server/api/blog/blog.js +17 -0
- package/dist/runtime/server/api/brand/[slug].d.ts +3 -0
- package/dist/runtime/server/api/brand/[slug].js +58 -0
- package/dist/runtime/server/api/cart/[slug]/add.d.ts +2 -0
- package/dist/runtime/server/api/cart/[slug]/add.js +21 -0
- package/dist/runtime/server/api/cart/[slug]/update.d.ts +2 -0
- package/dist/runtime/server/api/cart/[slug]/update.js +21 -0
- package/dist/runtime/server/api/cart/remove.d.ts +2 -0
- package/dist/runtime/server/api/cart/remove.js +21 -0
- package/dist/runtime/server/api/cart/service/[slug]/add.d.ts +2 -0
- package/dist/runtime/server/api/cart/service/[slug]/add.js +16 -0
- package/dist/runtime/server/api/catalog/categories.d.ts +3 -0
- package/dist/runtime/server/api/catalog/categories.js +43 -0
- package/dist/runtime/server/api/catalog/featured.d.ts +3 -0
- package/dist/runtime/server/api/catalog/featured.js +41 -0
- package/dist/runtime/server/api/catalog/samples.d.ts +3 -0
- package/dist/runtime/server/api/catalog/samples.js +44 -0
- package/dist/runtime/server/api/catalog/search.d.ts +3 -0
- package/dist/runtime/server/api/catalog/search.js +44 -0
- package/dist/runtime/server/api/category/[...slug].d.ts +3 -0
- package/dist/runtime/server/api/category/[...slug].js +51 -0
- package/dist/runtime/server/api/checkout/applyCoupon.d.ts +2 -0
- package/dist/runtime/server/api/checkout/applyCoupon.js +20 -0
- package/dist/runtime/server/api/checkout/configs.d.ts +2 -0
- package/dist/runtime/server/api/checkout/configs.js +20 -0
- package/dist/runtime/server/api/checkout/countries.d.ts +2 -0
- package/dist/runtime/server/api/checkout/countries.js +17 -0
- package/dist/runtime/server/api/checkout/paymentmethod.d.ts +2 -0
- package/dist/runtime/server/api/checkout/paymentmethod.js +20 -0
- package/dist/runtime/server/api/company/profile.d.ts +2 -0
- package/dist/runtime/server/api/company/profile.js +18 -0
- package/dist/runtime/server/api/contact-center/webforms/[id]/details.d.ts +3 -0
- package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +19 -0
- package/dist/runtime/server/api/contact-center/webforms/create.d.ts +2 -0
- package/dist/runtime/server/api/contact-center/webforms/create.js +16 -0
- package/dist/runtime/server/api/customer/address/add.d.ts +14 -0
- package/dist/runtime/server/api/customer/address/add.js +33 -0
- package/dist/runtime/server/api/customer/address/delete.d.ts +20 -0
- package/dist/runtime/server/api/customer/address/delete.js +37 -0
- package/dist/runtime/server/api/customer/address/setshipping.d.ts +20 -0
- package/dist/runtime/server/api/customer/address/setshipping.js +41 -0
- package/dist/runtime/server/api/customer/address/update.d.ts +20 -0
- package/dist/runtime/server/api/customer/address/update.js +42 -0
- package/dist/runtime/server/api/customer/cards/delete.d.ts +2 -0
- package/dist/runtime/server/api/customer/cards/delete.js +23 -0
- package/dist/runtime/server/api/customer/cards/get.d.ts +2 -0
- package/dist/runtime/server/api/customer/cards/get.js +17 -0
- package/dist/runtime/server/api/customer/change-password.d.ts +14 -0
- package/dist/runtime/server/api/customer/change-password.js +34 -0
- package/dist/runtime/server/api/customer/checkout.d.ts +2 -0
- package/dist/runtime/server/api/customer/checkout.js +20 -0
- package/dist/runtime/server/api/customer/orders.d.ts +2 -0
- package/dist/runtime/server/api/customer/orders.js +17 -0
- package/dist/runtime/server/api/customer/profile/update.d.ts +14 -0
- package/dist/runtime/server/api/customer/profile/update.js +34 -0
- package/dist/runtime/server/api/customer/quotations.d.ts +2 -0
- package/dist/runtime/server/api/customer/quotations.js +17 -0
- package/dist/runtime/server/api/customer/search.d.ts +2 -0
- package/dist/runtime/server/api/customer/search.js +15 -0
- package/dist/runtime/server/api/customer/tax-invoice.d.ts +8 -0
- package/dist/runtime/server/api/customer/tax-invoice.js +36 -0
- package/dist/runtime/server/api/customer/wishlist/add.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/add.js +30 -0
- package/dist/runtime/server/api/customer/wishlist/createWishList.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/createWishList.js +29 -0
- package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +46 -0
- package/dist/runtime/server/api/customer/wishlist/deleteWishList.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +30 -0
- package/dist/runtime/server/api/customer/wishlist/get.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/get.js +17 -0
- package/dist/runtime/server/api/customer/wishlist/getWishListItems.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +21 -0
- package/dist/runtime/server/api/customer/wishlist/updateWishList.d.ts +2 -0
- package/dist/runtime/server/api/customer/wishlist/updateWishList.js +30 -0
- package/dist/runtime/server/api/location.d.ts +2 -0
- package/dist/runtime/server/api/location.js +13 -0
- package/dist/runtime/server/api/nav/[id]/links.d.ts +2 -0
- package/dist/runtime/server/api/nav/[id]/links.js +19 -0
- package/dist/runtime/server/api/page/[slug].d.ts +3 -0
- package/dist/runtime/server/api/page/[slug].js +51 -0
- package/dist/runtime/server/api/product/[...slug].d.ts +3 -0
- package/dist/runtime/server/api/product/[...slug].js +44 -0
- package/dist/runtime/server/api/service/[slug].d.ts +3 -0
- package/dist/runtime/server/api/service/[slug].js +51 -0
- package/dist/runtime/server/api/service/availability.d.ts +2 -0
- package/dist/runtime/server/api/service/availability.js +27 -0
- package/dist/runtime/server/api/subscribe.d.ts +2 -0
- package/dist/runtime/server/api/subscribe.js +16 -0
- package/dist/runtime/server/api/v2/[...slug].d.ts +3 -0
- package/dist/runtime/server/api/v2/[...slug].js +9 -0
- package/dist/runtime/server/tsconfig.json +3 -0
- package/dist/runtime/stores/Booking.d.ts +99 -0
- package/dist/runtime/stores/Booking.js +96 -0
- package/dist/runtime/stores/Cart.d.ts +67 -0
- package/dist/runtime/stores/Cart.js +272 -0
- package/dist/runtime/stores/Categories.d.ts +13 -0
- package/dist/runtime/stores/Categories.js +90 -0
- package/dist/runtime/stores/Checkout.d.ts +85 -0
- package/dist/runtime/stores/Checkout.js +213 -0
- package/dist/runtime/stores/IpLocation.d.ts +18 -0
- package/dist/runtime/stores/IpLocation.js +29 -0
- package/dist/runtime/stores/NavMenu.d.ts +15 -0
- package/dist/runtime/stores/NavMenu.js +26 -0
- package/dist/runtime/stores/Search.d.ts +0 -0
- package/dist/runtime/stores/Search.js +33 -0
- package/dist/runtime/stores/Services.d.ts +7 -0
- package/dist/runtime/stores/Services.js +49 -0
- package/dist/runtime/stores/Utilities.d.ts +5 -0
- package/dist/runtime/stores/Utilities.js +11 -0
- package/dist/runtime/stores/addresses.d.ts +15 -0
- package/dist/runtime/stores/addresses.js +31 -0
- package/dist/runtime/stores/auth.d.ts +62 -0
- package/dist/runtime/stores/auth.js +59 -0
- package/dist/runtime/stores/cards.d.ts +15 -0
- package/dist/runtime/stores/cards.js +22 -0
- package/dist/runtime/stores/compareStore.d.ts +7 -0
- package/dist/runtime/stores/compareStore.js +45 -0
- package/dist/runtime/stores/countries.d.ts +10 -0
- package/dist/runtime/stores/countries.js +19 -0
- package/dist/runtime/stores/index.d.ts +26 -0
- package/dist/runtime/stores/index.js +24 -0
- package/dist/runtime/stores/locations.d.ts +11 -0
- package/dist/runtime/stores/locations.js +19 -0
- package/dist/runtime/stores/orders.d.ts +16 -0
- package/dist/runtime/stores/orders.js +19 -0
- package/dist/runtime/stores/product/README.md +141 -0
- package/dist/runtime/stores/product/slug.d.ts +181 -0
- package/dist/runtime/stores/product/slug.js +91 -0
- package/dist/runtime/stores/product.d.ts +5 -0
- package/dist/runtime/stores/product.js +38 -0
- package/dist/runtime/stores/quotations.d.ts +12 -0
- package/dist/runtime/stores/quotations.js +19 -0
- package/dist/runtime/stores/subscriptions.d.ts +11 -0
- package/dist/runtime/stores/subscriptions.js +19 -0
- package/dist/runtime/stores/useCompanyProfile.d.ts +7 -0
- package/dist/runtime/stores/useCompanyProfile.js +22 -0
- package/dist/runtime/stores/useNavMenuStore.d.ts +5 -0
- package/dist/runtime/stores/useNavMenuStore.js +23 -0
- package/dist/runtime/stores/webforms.d.ts +18 -0
- package/dist/runtime/stores/webforms.js +23 -0
- package/dist/runtime/stores/wishlists.d.ts +28 -0
- package/dist/runtime/stores/wishlists.js +49 -0
- package/dist/runtime/utils/api.d.ts +13 -0
- package/dist/runtime/utils/api.js +102 -0
- package/dist/runtime/utils/companyProfile.d.ts +22 -0
- package/dist/runtime/utils/companyProfile.js +21 -0
- package/dist/types.d.mts +3 -0
- package/package.json +56 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { defineEventHandler, readBody, createError } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
try {
|
|
4
|
+
const body = await readBody(event);
|
|
5
|
+
const { email, password } = body;
|
|
6
|
+
if (!email || !password) {
|
|
7
|
+
throw createError({
|
|
8
|
+
statusCode: 400,
|
|
9
|
+
statusMessage: "Email and password are required"
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
const config = useRuntimeConfig();
|
|
13
|
+
const apiBase = config.apiBase;
|
|
14
|
+
const apiKey = config.apiKey;
|
|
15
|
+
const apiSecret = config.apiSecret;
|
|
16
|
+
const apiOrigin = config.apiOrigin;
|
|
17
|
+
const response = await fetch(`${process.env.FLOWRIX_API_BASE}login/`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
21
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
22
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
23
|
+
"Content-Type": "application/json"
|
|
24
|
+
},
|
|
25
|
+
body: JSON.stringify({ email, password })
|
|
26
|
+
});
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
let errorMessage = "Login failed";
|
|
29
|
+
try {
|
|
30
|
+
const errorData = await response.json();
|
|
31
|
+
console.error("Error response data:", errorData);
|
|
32
|
+
if (errorData.message) {
|
|
33
|
+
if (Array.isArray(errorData.message)) {
|
|
34
|
+
errorMessage = errorData.message.join(", ");
|
|
35
|
+
} else if (typeof errorData.message === "object") {
|
|
36
|
+
errorMessage = errorData.message.email || Object.values(errorData.message)[0] || errorMessage;
|
|
37
|
+
} else {
|
|
38
|
+
errorMessage = errorData.message;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} catch (parseError) {
|
|
42
|
+
console.error("Failed to parse error response:", parseError);
|
|
43
|
+
errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
44
|
+
}
|
|
45
|
+
throw createError({
|
|
46
|
+
statusCode: response.status,
|
|
47
|
+
statusMessage: errorMessage
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const data = await response.json();
|
|
51
|
+
let user;
|
|
52
|
+
let token;
|
|
53
|
+
user = data.data.user;
|
|
54
|
+
token = data.data.access_token;
|
|
55
|
+
return {
|
|
56
|
+
user,
|
|
57
|
+
token
|
|
58
|
+
};
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error("Login error:", error);
|
|
61
|
+
if (error.statusCode || error.status) {
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
throw createError({
|
|
65
|
+
statusCode: 500,
|
|
66
|
+
statusMessage: error.message || "Internal server error"
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { defineEventHandler, getCookie, deleteCookie } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
const accessTok = getCookie(event, "auth.token");
|
|
4
|
+
try {
|
|
5
|
+
await $fetch(`${process.env.FLOWRIX_API_BASE}customer/logout`, {
|
|
6
|
+
method: "POST",
|
|
7
|
+
headers: {
|
|
8
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
9
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
10
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
11
|
+
"Authorization": `Bearer ${accessTok || ""}`
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
deleteCookie(event, "auth.token");
|
|
15
|
+
deleteCookie(event, "auth.refreshToken");
|
|
16
|
+
deleteCookie(event, "auth.user");
|
|
17
|
+
deleteCookie(event, "auth.session");
|
|
18
|
+
return { success: true, message: "Logout successful" };
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.error("Error customer logout:", error);
|
|
21
|
+
return { success: false, message: "Logout failed" };
|
|
22
|
+
}
|
|
23
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { defineEventHandler, readBody } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
const body = await readBody(event);
|
|
4
|
+
const { firstname, lastname, mobile, email, email_confirmation, password, password_confirmation } = body;
|
|
5
|
+
try {
|
|
6
|
+
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/create`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
headers: {
|
|
9
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
10
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
12
|
+
"Content-Type": "application/json"
|
|
13
|
+
},
|
|
14
|
+
body: JSON.stringify({ firstname, lastname, mobile, email, email_confirmation, password, password_confirmation })
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
let errorMessage = {};
|
|
18
|
+
let errorData;
|
|
19
|
+
try {
|
|
20
|
+
errorData = await response.json();
|
|
21
|
+
console.error("Error response data:", errorData);
|
|
22
|
+
if (errorData.message) {
|
|
23
|
+
errorMessage = errorData.message?.email || errorData.message;
|
|
24
|
+
}
|
|
25
|
+
} catch (parseError) {
|
|
26
|
+
errorMessage = "Failed to parse error details.";
|
|
27
|
+
console.error("Error parsing JSON:", parseError);
|
|
28
|
+
errorData = { message: errorMessage };
|
|
29
|
+
}
|
|
30
|
+
throw createError({
|
|
31
|
+
status: response.status,
|
|
32
|
+
message: errorMessage,
|
|
33
|
+
// Use the more specific errorMessage
|
|
34
|
+
data: { message: errorMessage, errorData }
|
|
35
|
+
// Include both messages and the raw error
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const data = await response.json();
|
|
39
|
+
return data.data;
|
|
40
|
+
} catch (error) {
|
|
41
|
+
const statusCode = error.status || 500;
|
|
42
|
+
const message = error.message || "An unexpected error occurred";
|
|
43
|
+
const errorData = error.data || { message };
|
|
44
|
+
console.error("Final Error:", { statusCode, message, errorData });
|
|
45
|
+
throw createError({
|
|
46
|
+
status: statusCode,
|
|
47
|
+
message,
|
|
48
|
+
data: errorData
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { defineEventHandler, getCookie, createError } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
try {
|
|
4
|
+
const authHeader = getHeader(event, "authorization");
|
|
5
|
+
const token = authHeader?.replace("Bearer ", "") || getCookie(event, "nuxt-auth.token");
|
|
6
|
+
if (!token) {
|
|
7
|
+
throw createError({
|
|
8
|
+
statusCode: 401,
|
|
9
|
+
statusMessage: "No token provided"
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
const config = useRuntimeConfig();
|
|
13
|
+
const apiBase = config.apiBase;
|
|
14
|
+
const apiKey = config.apiKey;
|
|
15
|
+
const apiSecret = config.apiSecret;
|
|
16
|
+
const apiOrigin = config.apiOrigin;
|
|
17
|
+
const response = await fetch(`${apiBase}user/session`, {
|
|
18
|
+
method: "GET",
|
|
19
|
+
headers: {
|
|
20
|
+
"x-api-key": apiKey,
|
|
21
|
+
"x-api-secret": apiSecret,
|
|
22
|
+
"Origin": apiOrigin || "",
|
|
23
|
+
"Authorization": `Bearer ${token}`,
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
"Accept": "application/json"
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
throw createError({
|
|
30
|
+
statusCode: response.status,
|
|
31
|
+
statusMessage: "Failed to get session"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const data = await response.json();
|
|
35
|
+
return data.data || data.user || data;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error("Session error:", error);
|
|
38
|
+
if (error.statusCode || error.status) {
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
throw createError({
|
|
42
|
+
statusCode: 401,
|
|
43
|
+
statusMessage: "Invalid session"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { defineEventHandler, readBody, getCookie, sendError } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
const body = await readBody(event);
|
|
4
|
+
const { password, password_confirmation, token } = body;
|
|
5
|
+
try {
|
|
6
|
+
const auth_token = getCookie(event, "token");
|
|
7
|
+
const response = await fetch(`${process.env.FLOWRIX_API_BASE}reset-password/`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
11
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
12
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
// <--- CHANGE THIS
|
|
15
|
+
Authorization: `Bearer ${auth_token}`
|
|
16
|
+
// Use the token from the cookie
|
|
17
|
+
},
|
|
18
|
+
body: JSON.stringify({ "token": auth_token, password, password_confirmation })
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
let errorMessage = ``;
|
|
22
|
+
const errorData = await response.json();
|
|
23
|
+
errorMessage += errorData.message?.password || errorData.message.token;
|
|
24
|
+
throw sendError(event, {
|
|
25
|
+
statusCode: 400,
|
|
26
|
+
statusMessage: errorMessage,
|
|
27
|
+
data: errorMessage
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
return data;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return sendError(event, {
|
|
34
|
+
statusCode: 500,
|
|
35
|
+
statusMessage: `Login failed: ${error.message || "An unexpected error occurred"}`,
|
|
36
|
+
data: { message: error.message || "An unexpected error occurred" }
|
|
37
|
+
// Include in data as well
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { defineEventHandler, getHeader, createError } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
const authHeader = getHeader(event, "authorization");
|
|
4
|
+
try {
|
|
5
|
+
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/profile`, {
|
|
6
|
+
method: "GET",
|
|
7
|
+
headers: {
|
|
8
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
9
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
10
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
11
|
+
Authorization: authHeader
|
|
12
|
+
// Use the authorization header if available
|
|
13
|
+
}
|
|
14
|
+
// body: JSON.stringify({ email, password }),
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
let errorMessage = ``;
|
|
18
|
+
try {
|
|
19
|
+
const errorData = await response.json();
|
|
20
|
+
if (errorData.message) {
|
|
21
|
+
errorMessage += errorData.message?.email || errorData.message;
|
|
22
|
+
}
|
|
23
|
+
} catch (parseError) {
|
|
24
|
+
errorMessage += "Failed to parse error details.";
|
|
25
|
+
}
|
|
26
|
+
throw createError({
|
|
27
|
+
status: 400,
|
|
28
|
+
statusMessage: "Bad Request",
|
|
29
|
+
message: "Invalid user input",
|
|
30
|
+
data: { field: "email" }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
return data.data;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
throw createError({
|
|
37
|
+
status: 400,
|
|
38
|
+
statusMessage: "Bad Request",
|
|
39
|
+
message: "Invalid user input",
|
|
40
|
+
data: { field: "email" }
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineEventHandler, readBody, setCookie, createError } from "h3";
|
|
2
|
+
export default defineEventHandler(async (event) => {
|
|
3
|
+
const body = await readBody(event);
|
|
4
|
+
const { email, token } = body;
|
|
5
|
+
try {
|
|
6
|
+
const response = await fetch(`${process.env.FLOWRIX_API_BASE}verify-token/`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
headers: {
|
|
9
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
10
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
12
|
+
"Content-Type": "application/json"
|
|
13
|
+
},
|
|
14
|
+
body: JSON.stringify({ email, token })
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
let errorMessage = ``;
|
|
18
|
+
try {
|
|
19
|
+
const errorData = await response.json();
|
|
20
|
+
console.error("Error response data:", errorData.message);
|
|
21
|
+
if (errorData.message) {
|
|
22
|
+
errorMessage += errorData.message?.email || errorData.message;
|
|
23
|
+
}
|
|
24
|
+
} catch (parseError) {
|
|
25
|
+
errorMessage += "Failed to parse error details.";
|
|
26
|
+
}
|
|
27
|
+
throw createError({
|
|
28
|
+
status: 400,
|
|
29
|
+
statusMessage: "Bad Request",
|
|
30
|
+
message: "Invalid user input",
|
|
31
|
+
data: { field: "email" }
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const data = await response.json();
|
|
35
|
+
setCookie(event, "token", data?.data, {
|
|
36
|
+
httpOnly: true,
|
|
37
|
+
secure: process.env.NODE_ENV === "production",
|
|
38
|
+
path: "/",
|
|
39
|
+
sameSite: "lax"
|
|
40
|
+
});
|
|
41
|
+
return data;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw createError({
|
|
44
|
+
status: 400,
|
|
45
|
+
statusMessage: "Bad Request",
|
|
46
|
+
message: "Invalid user input",
|
|
47
|
+
data: { field: "email" }
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { defineEventHandler, createError } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
const CACHE_DIR = join(process.cwd(), ".nuxt", "cache", "nitro", "extra");
|
|
6
|
+
export const catelogCache = /* @__PURE__ */ new Map();
|
|
7
|
+
async function ensureCacheDir() {
|
|
8
|
+
try {
|
|
9
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
10
|
+
} catch (error) {
|
|
11
|
+
console.error("Error creating cache directory:", error);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export default defineEventHandler(async (event) => {
|
|
15
|
+
const fileName = "banners";
|
|
16
|
+
const filePath = join(CACHE_DIR, `${fileName}.json`);
|
|
17
|
+
try {
|
|
18
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
19
|
+
const catelog = JSON.parse(fileContent);
|
|
20
|
+
return catelog;
|
|
21
|
+
} catch (error) {
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const banners = await $fetch(`${process.env.FLOWRIX_API_BASE}banners`, {
|
|
25
|
+
headers: {
|
|
26
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
27
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
28
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
await ensureCacheDir();
|
|
32
|
+
await writeFile(filePath, JSON.stringify(banners, null, 2), "utf-8");
|
|
33
|
+
return banners;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
throw createError({
|
|
36
|
+
statusCode: 500,
|
|
37
|
+
statusMessage: `Failed to fetch catelog for slug: ${slug}`,
|
|
38
|
+
data: error.message
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam, getQuery, createError, readBody } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
const CACHE_DIR = join(process.cwd(), ".nuxt", "cache", "nitro", "blogs");
|
|
6
|
+
export const blogCache = /* @__PURE__ */ new Map();
|
|
7
|
+
async function ensureCacheDir() {
|
|
8
|
+
try {
|
|
9
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
10
|
+
} catch (error) {
|
|
11
|
+
console.error("Error creating cache directory:", error);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export default defineEventHandler(async (event) => {
|
|
15
|
+
const slug = getRouterParam(event, "slug");
|
|
16
|
+
const query = getQuery(event);
|
|
17
|
+
const body = await readBody(event);
|
|
18
|
+
if (!slug) {
|
|
19
|
+
throw createError({ statusCode: 400, statusMessage: "Missing slug parameter" });
|
|
20
|
+
}
|
|
21
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(slug)) {
|
|
22
|
+
throw createError({ statusCode: 400, statusMessage: "Invalid slug" });
|
|
23
|
+
}
|
|
24
|
+
const cacheKey = `${slug}-${JSON.stringify(query)}`;
|
|
25
|
+
const fileName = cacheKey.replace(/[^a-zA-Z0-9-_]/g, "_");
|
|
26
|
+
const filePath = join(CACHE_DIR, `${fileName}.json`);
|
|
27
|
+
try {
|
|
28
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
29
|
+
const blog = JSON.parse(fileContent);
|
|
30
|
+
return blog;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const blog = await $fetch(`${process.env.FLOWRIX_API_BASE}posts/${slug}`, {
|
|
35
|
+
headers: {
|
|
36
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
37
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
38
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
await ensureCacheDir();
|
|
42
|
+
await writeFile(filePath, JSON.stringify(blog, null, 2), "utf-8");
|
|
43
|
+
return blog;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
throw createError({
|
|
46
|
+
statusCode: 500,
|
|
47
|
+
statusMessage: `Failed to fetch blog for slug: ${slug}`,
|
|
48
|
+
data: error.message
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
export const Page = /* @__PURE__ */ new Map();
|
|
4
|
+
export default defineEventHandler(async (event) => {
|
|
5
|
+
const slug = getRouterParam(event, "slug");
|
|
6
|
+
const query = getQuery(event);
|
|
7
|
+
const page = await $fetch(`${process.env.FLOWRIX_API_BASE}posts`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
11
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
12
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
13
|
+
},
|
|
14
|
+
query
|
|
15
|
+
});
|
|
16
|
+
return page;
|
|
17
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam, getQuery, createError, readBody } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
const CACHE_DIR = join(process.cwd(), ".nuxt", "cache", "nitro", "brands");
|
|
6
|
+
export const brandCache = /* @__PURE__ */ new Map();
|
|
7
|
+
async function ensureCacheDir() {
|
|
8
|
+
try {
|
|
9
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
10
|
+
} catch (error) {
|
|
11
|
+
console.error("Error creating cache directory:", error);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export default defineEventHandler(async (event) => {
|
|
15
|
+
const slug = getRouterParam(event, "slug");
|
|
16
|
+
const query = getQuery(event);
|
|
17
|
+
const body = await readBody(event);
|
|
18
|
+
const isclearcashe = query.clearcache || false;
|
|
19
|
+
delete query.clearcache;
|
|
20
|
+
if (!slug) {
|
|
21
|
+
throw createError({ statusCode: 400, statusMessage: "Missing slug parameter" });
|
|
22
|
+
}
|
|
23
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(slug)) {
|
|
24
|
+
throw createError({ statusCode: 400, statusMessage: "Invalid slug" });
|
|
25
|
+
}
|
|
26
|
+
const cacheKey = `${slug}-${JSON.stringify(query)}`;
|
|
27
|
+
const fileName = cacheKey.replace(/[^a-zA-Z0-9-_]/g, "_");
|
|
28
|
+
const filePath = join(CACHE_DIR, `${fileName}.json`);
|
|
29
|
+
if (!isclearcashe) {
|
|
30
|
+
try {
|
|
31
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
32
|
+
const brand = JSON.parse(fileContent);
|
|
33
|
+
return brand;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const brand = await $fetch(`${process.env.FLOWRIX_API_BASE}brands/${slug}`, {
|
|
39
|
+
query,
|
|
40
|
+
method: "get",
|
|
41
|
+
headers: {
|
|
42
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
43
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
44
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
45
|
+
},
|
|
46
|
+
body: JSON.stringify(body)
|
|
47
|
+
});
|
|
48
|
+
await ensureCacheDir();
|
|
49
|
+
await writeFile(filePath, JSON.stringify(brand, null, 2), "utf-8");
|
|
50
|
+
return brand;
|
|
51
|
+
} catch (error) {
|
|
52
|
+
throw createError({
|
|
53
|
+
statusCode: 500,
|
|
54
|
+
statusMessage: `Failed to fetch brand for slug: ${slug}`,
|
|
55
|
+
data: error.message
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam, setResponseStatus, readBody } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
export default defineEventHandler(async (event) => {
|
|
4
|
+
const slug = getRouterParam(event, "slug");
|
|
5
|
+
const body = await readBody(event);
|
|
6
|
+
try {
|
|
7
|
+
const productResponse = await $fetch(`${process.env.FLOWRIX_API_BASE}cart/${slug}/add`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
11
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
12
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
13
|
+
},
|
|
14
|
+
body
|
|
15
|
+
});
|
|
16
|
+
return productResponse;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
setResponseStatus(event, 500);
|
|
19
|
+
return { success: false, error: error.message };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam, setResponseStatus, readBody } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
export default defineEventHandler(async (event) => {
|
|
4
|
+
const slug = getRouterParam(event, "slug");
|
|
5
|
+
const body = await readBody(event);
|
|
6
|
+
try {
|
|
7
|
+
const productResponse = await $fetch(`${process.env.FLOWRIX_API_BASE}cart/${slug}/update`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
11
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
12
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
13
|
+
},
|
|
14
|
+
body
|
|
15
|
+
});
|
|
16
|
+
return productResponse;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
setResponseStatus(event, 500);
|
|
19
|
+
return { success: false, error: error.message };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineEventHandler, getRouterParam, setResponseStatus, readBody } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
export default defineEventHandler(async (event) => {
|
|
4
|
+
const slug = getRouterParam(event, "slug");
|
|
5
|
+
const body = await readBody(event);
|
|
6
|
+
try {
|
|
7
|
+
const productResponse = await $fetch(`${process.env.FLOWRIX_API_BASE}cart/remove`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
11
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
12
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
13
|
+
},
|
|
14
|
+
body
|
|
15
|
+
});
|
|
16
|
+
return productResponse;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
setResponseStatus(event, 500);
|
|
19
|
+
return { success: false, error: error.message };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineEventHandler } from "h3";
|
|
2
|
+
import { $fetch } from "ofetch";
|
|
3
|
+
export default defineEventHandler(async (event) => {
|
|
4
|
+
const slug = getRouterParam(event, "slug");
|
|
5
|
+
const body = await readBody(event);
|
|
6
|
+
const services = await $fetch(`${process.env.FLOWRIX_API_BASE}cart/service/${slug}/add`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
headers: {
|
|
9
|
+
"x-api-key": process.env.FLOWRIX_API_KEY,
|
|
10
|
+
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
|
+
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
12
|
+
},
|
|
13
|
+
body
|
|
14
|
+
});
|
|
15
|
+
return services;
|
|
16
|
+
});
|