flowrix 1.0.1-beta.9 → 1.0.1-beta.91
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/module.d.mts +1 -6
- package/dist/module.json +1 -1
- package/dist/module.mjs +103 -34
- package/dist/runtime/composables/Blog/useBlogIndex.d.ts +2 -5
- package/dist/runtime/composables/Brand/brand.js +2 -0
- package/dist/runtime/composables/Cart/useCart.d.ts +40 -0
- package/dist/runtime/composables/Cart/useCart.js +10 -0
- package/dist/runtime/composables/Cart/useCartDetail.d.ts +15 -5
- package/dist/runtime/composables/Cart/useCartDetail.js +3 -0
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.d.ts +40 -1
- package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.js +2 -2
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.d.ts +40 -1
- package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.js +2 -2
- package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.js +3 -14
- package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.d.ts +2 -2
- package/dist/runtime/composables/Checkout/useCheckout.d.ts +84 -73
- package/dist/runtime/composables/Checkout/useCheckout.js +81 -34
- package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.d.ts +43 -0
- package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.js +84 -0
- package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.d.ts +55 -0
- package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.js +196 -0
- package/dist/runtime/composables/Checkout/useCreateAccount.d.ts +7 -7
- package/dist/runtime/composables/Checkout/useCreateAccount.js +3 -1
- package/dist/runtime/composables/Checkout/useDeliveryMethod.d.ts +2 -2
- package/dist/runtime/composables/Checkout/useDeliveryMethod.js +8 -7
- package/dist/runtime/composables/Customer/useBillingAddress.d.ts +112 -0
- package/dist/runtime/composables/Customer/useBillingAddress.js +93 -0
- package/dist/runtime/composables/Customer/useLogin.d.ts +9 -0
- package/dist/runtime/composables/Customer/useLogin.js +34 -0
- package/dist/runtime/composables/Customer/useOrders.d.ts +29 -0
- package/dist/runtime/composables/Customer/useOrders.js +56 -0
- package/dist/runtime/composables/Customer/usePasswordReset.d.ts +26 -0
- package/dist/runtime/composables/Customer/usePasswordReset.js +258 -0
- package/dist/runtime/composables/Customer/useProfile.d.ts +75 -0
- package/dist/runtime/composables/Customer/useProfile.js +106 -0
- package/dist/runtime/composables/Customer/useQuotations.d.ts +32 -0
- package/dist/runtime/composables/Customer/useQuotations.js +40 -0
- package/dist/runtime/composables/Customer/useRegister.d.ts +120 -11
- package/dist/runtime/composables/Customer/useRegister.js +311 -34
- package/dist/runtime/composables/Customer/useShippingAddress.d.ts +121 -0
- package/dist/runtime/composables/Customer/useShippingAddress.js +145 -0
- package/dist/runtime/composables/Customer/useUpdatePassword.d.ts +21 -0
- package/dist/runtime/composables/Customer/useUpdatePassword.js +94 -0
- package/dist/runtime/composables/Customer/useUserCards.d.ts +22 -0
- package/dist/runtime/composables/Customer/useUserCards.js +65 -0
- package/dist/runtime/composables/{useWishlists.d.ts → Customer/useWishlists.d.ts} +6 -19
- package/dist/runtime/composables/{useWishlists.js → Customer/useWishlists.js} +21 -29
- package/dist/runtime/composables/Extras/useCountry.d.ts +11 -6
- package/dist/runtime/composables/Extras/useCountry.js +5 -4
- package/dist/runtime/composables/Header/useHeader.d.ts +6 -20
- package/dist/runtime/composables/Header/useHeader.js +3 -2
- package/dist/runtime/composables/Product/CustomProduct/useSteps.d.ts +1 -1
- package/dist/runtime/composables/Product/useProductComponent.js +2 -0
- package/dist/runtime/composables/Product/useProductSlug.d.ts +8 -1
- package/dist/runtime/composables/Product/useQuickView.d.ts +8 -0
- package/dist/runtime/composables/Product/useQuickView.js +27 -0
- package/dist/runtime/composables/Product/useService.d.ts +1 -1
- package/dist/runtime/composables/Product/useService.js +0 -3
- package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +2 -2
- package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +2 -2
- package/dist/runtime/composables/index.d.ts +16 -12
- package/dist/runtime/composables/index.js +16 -12
- package/dist/runtime/composables/useAddresses.js +6 -6
- package/dist/runtime/composables/useCards.js +2 -2
- package/dist/runtime/composables/useDataLayer.js +2 -1
- package/dist/runtime/composables/useLocation.d.ts +2 -12
- package/dist/runtime/composables/useQuotationCheckout.d.ts +78 -0
- package/dist/runtime/composables/useQuotationCheckout.js +138 -0
- package/dist/runtime/middleware/flowrix.d.ts +5 -4
- package/dist/runtime/middleware/flowrix.js +41 -21
- package/dist/runtime/pages/flowrix-default.d.vue.ts +3 -0
- package/dist/runtime/pages/flowrix-default.vue +34 -0
- package/dist/runtime/pages/flowrix-default.vue.d.ts +3 -0
- package/dist/runtime/plugin.d.ts +1 -1
- package/dist/runtime/server/api/albums.d.ts +1 -0
- package/dist/runtime/server/api/albums.js +38 -12
- package/dist/runtime/server/api/auth/forgot.js +1 -1
- package/dist/runtime/server/api/auth/login.js +5 -6
- package/dist/runtime/server/api/auth/logout.js +1 -1
- package/dist/runtime/server/api/auth/register.js +1 -1
- package/dist/runtime/server/api/auth/session.get.js +1 -1
- package/dist/runtime/server/api/auth/user/reset-password.js +1 -1
- package/dist/runtime/server/api/auth/user/session.js +1 -1
- package/dist/runtime/server/api/auth/user/verify-token.js +1 -1
- package/dist/runtime/server/api/banners.js +15 -12
- package/dist/runtime/server/api/brand/[...slug].js +55 -0
- package/dist/runtime/server/api/brand/index.d.ts +3 -0
- package/dist/runtime/server/api/brand/index.js +49 -0
- package/dist/runtime/server/api/cache/[...slug].delete.d.ts +2 -0
- package/dist/runtime/server/api/cache/[...slug].delete.js +40 -0
- package/dist/runtime/server/api/cache/clean.get.d.ts +5 -0
- package/dist/runtime/server/api/cache/clean.get.js +16 -0
- package/dist/runtime/server/api/cart/[slug]/add.d.ts +1 -1
- package/dist/runtime/server/api/cart/[slug]/add.js +11 -11
- package/dist/runtime/server/api/cart/[slug]/update.d.ts +1 -1
- package/dist/runtime/server/api/cart/[slug]/update.js +11 -11
- package/dist/runtime/server/api/{blog/blog.d.ts → cart/related.d.ts} +0 -1
- package/dist/runtime/server/api/cart/related.js +21 -0
- package/dist/runtime/server/api/cart/remove.js +1 -1
- package/dist/runtime/server/api/cart/service/[slug]/add.d.ts +1 -1
- package/dist/runtime/server/api/cart/service/[slug]/add.js +12 -12
- package/dist/runtime/server/api/catalog/brands.d.ts +3 -0
- package/dist/runtime/server/api/catalog/brands.js +49 -0
- package/dist/runtime/server/api/catalog/categories.js +22 -16
- package/dist/runtime/server/api/catalog/categoriesall.d.ts +3 -0
- package/dist/runtime/server/api/catalog/categoriesall.js +49 -0
- package/dist/runtime/server/api/catalog/featured.js +22 -14
- package/dist/runtime/server/api/catalog/posts.d.ts +3 -0
- package/dist/runtime/server/api/catalog/posts.js +49 -0
- package/dist/runtime/server/api/catalog/samples.js +22 -16
- package/dist/runtime/server/api/catalog/search.js +21 -15
- package/dist/runtime/server/api/category/[...slug].js +22 -16
- package/dist/runtime/server/api/checkout/applyCoupon.d.ts +1 -1
- package/dist/runtime/server/api/checkout/applyCoupon.js +13 -13
- package/dist/runtime/server/api/checkout/configs.d.ts +1 -1
- package/dist/runtime/server/api/checkout/configs.js +11 -11
- package/dist/runtime/server/api/checkout/countries.d.ts +1 -1
- package/dist/runtime/server/api/checkout/countries.js +5 -9
- package/dist/runtime/server/api/checkout/paymentmethod.d.ts +1 -1
- package/dist/runtime/server/api/checkout/paymentmethod.js +16 -11
- package/dist/runtime/server/api/checkout/quotation/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/[slug].js +21 -0
- package/dist/runtime/server/api/checkout/quotation/guest/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/guest/[slug].js +37 -0
- package/dist/runtime/server/api/checkout/quotation/guest/customer.d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/guest/customer.js +21 -0
- package/dist/runtime/server/api/checkout/quotation/submit/[slug].d.ts +2 -0
- package/dist/runtime/server/api/checkout/quotation/submit/[slug].js +23 -0
- package/dist/runtime/server/api/{blog/[slug].js → cmspost/[...slug].js} +19 -18
- package/dist/runtime/server/api/cmspost/all.d.ts +3 -0
- package/dist/runtime/server/api/cmspost/all.js +49 -0
- package/dist/runtime/server/api/company/profile.d.ts +1 -1
- package/dist/runtime/server/api/company/profile.js +9 -9
- package/dist/runtime/server/api/contact-center/webforms/[id]/details.d.ts +1 -1
- package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +48 -15
- package/dist/runtime/server/api/contact-center/webforms/create.d.ts +1 -1
- package/dist/runtime/server/api/contact-center/webforms/create.js +10 -10
- package/dist/runtime/server/api/countries.d.ts +2 -0
- package/dist/runtime/server/api/countries.js +42 -0
- package/dist/runtime/server/api/customer/address/add.js +1 -1
- package/dist/runtime/server/api/customer/address/delete.js +2 -2
- package/dist/runtime/server/api/customer/address/setshipping.js +1 -1
- package/dist/runtime/server/api/customer/address/update.js +1 -1
- package/dist/runtime/server/api/customer/cards/delete.js +2 -2
- package/dist/runtime/server/api/customer/cards/get.js +2 -2
- package/dist/runtime/server/api/customer/change-password.js +2 -2
- package/dist/runtime/server/api/customer/checkout.js +1 -1
- package/dist/runtime/server/api/customer/orders.js +2 -2
- package/dist/runtime/server/api/customer/profile/update.js +1 -1
- package/dist/runtime/server/api/customer/quotations.js +2 -2
- package/dist/runtime/server/api/customer/search.js +1 -1
- package/dist/runtime/server/api/customer/tax-invoice.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/add.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/createWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/get.js +2 -2
- package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +1 -1
- package/dist/runtime/server/api/customer/wishlist/updateWishList.js +2 -2
- package/dist/runtime/server/api/featured.d.ts +3 -0
- package/dist/runtime/server/api/featured.js +49 -0
- package/dist/runtime/server/api/generate/robots.get.d.ts +2 -0
- package/dist/runtime/server/api/generate/robots.get.js +20 -0
- package/dist/runtime/server/api/generate/sitemap.get.d.ts +2 -0
- package/dist/runtime/server/api/generate/sitemap.get.js +32 -0
- package/dist/runtime/server/api/location.d.ts +1 -1
- package/dist/runtime/server/api/location.js +20 -12
- package/dist/runtime/server/api/nav/[id]/links.d.ts +1 -0
- package/dist/runtime/server/api/nav/[id]/links.js +48 -14
- package/dist/runtime/server/api/page/{[slug].js → [...slug].js} +18 -17
- package/dist/runtime/server/api/product/[...slug].js +23 -9
- package/dist/runtime/server/api/{v2/[...slug].d.ts → quickview/[slug].d.ts} +0 -1
- package/dist/runtime/server/api/quickview/[slug].js +17 -0
- package/dist/runtime/server/api/reviews.d.ts +2 -0
- package/dist/runtime/server/api/reviews.js +18 -0
- package/dist/runtime/server/api/samples.d.ts +3 -0
- package/dist/runtime/server/api/samples.js +50 -0
- package/dist/runtime/server/api/search.d.ts +3 -0
- package/dist/runtime/server/api/search.js +50 -0
- package/dist/runtime/server/api/service/[slug].js +17 -13
- package/dist/runtime/server/api/service/availability.d.ts +1 -1
- package/dist/runtime/server/api/service/availability.js +11 -13
- package/dist/runtime/server/api/service/getall.d.ts +3 -0
- package/dist/runtime/server/api/service/getall.js +55 -0
- package/dist/runtime/server/api/shop.d.ts +3 -0
- package/dist/runtime/server/api/shop.js +50 -0
- package/dist/runtime/server/api/subscribe.d.ts +1 -1
- package/dist/runtime/server/api/subscribe.js +19 -14
- package/dist/runtime/server/api/v2/[...slug].get.d.ts +2 -0
- package/dist/runtime/server/api/v2/[...slug].get.js +16 -0
- package/dist/runtime/server/api/webform.d.ts +3 -0
- package/dist/runtime/server/api/webform.js +52 -0
- package/dist/runtime/server/tsconfig.json +3 -3
- package/dist/runtime/stores/Cart.d.ts +12 -0
- package/dist/runtime/stores/Cart.js +56 -19
- package/dist/runtime/stores/Checkout.d.ts +9 -15
- package/dist/runtime/stores/Checkout.js +19 -24
- package/dist/runtime/stores/Search.d.ts +1 -1
- package/dist/runtime/stores/Services.js +2 -2
- package/dist/runtime/stores/auth.d.ts +8 -11
- package/dist/runtime/stores/auth.js +390 -8
- package/dist/runtime/stores/countries.d.ts +1 -3
- package/dist/runtime/stores/countries.js +4 -8
- package/dist/runtime/stores/product/slug.d.ts +1 -17
- package/dist/runtime/stores/wishlists.d.ts +114 -6
- package/dist/runtime/stores/wishlists.js +209 -9
- package/dist/runtime/utils/api.js +9 -13
- package/dist/runtime/utils/htmlCache.d.ts +2 -2
- package/dist/runtime/utils/htmlCache.js +23 -13
- package/dist/types.d.mts +6 -2
- package/package.json +30 -20
- package/dist/runtime/composables/Checkout/useBillingAddress.d.ts +0 -19
- package/dist/runtime/composables/Checkout/useBillingAddress.js +0 -82
- package/dist/runtime/composables/Checkout/useShippingAddress.d.ts +0 -9
- package/dist/runtime/composables/Checkout/useShippingAddress.js +0 -121
- package/dist/runtime/composables/useAuth.d.ts +0 -45
- package/dist/runtime/composables/useAuth.js +0 -180
- package/dist/runtime/composables/useCountries.d.ts +0 -12
- package/dist/runtime/composables/useCountries.js +0 -50
- package/dist/runtime/composables/useOrders.d.ts +0 -21
- package/dist/runtime/composables/useOrders.js +0 -82
- package/dist/runtime/composables/useQuotations.d.ts +0 -14
- package/dist/runtime/composables/useQuotations.js +0 -50
- package/dist/runtime/plugins/fullReload.client.d.ts +0 -2
- package/dist/runtime/plugins/fullReload.client.js +0 -10
- package/dist/runtime/server/api/blog/blog.js +0 -17
- package/dist/runtime/server/api/brand/[slug].js +0 -58
- package/dist/runtime/server/api/v2/[...slug].js +0 -9
- /package/dist/runtime/server/api/brand/{[slug].d.ts → [...slug].d.ts} +0 -0
- /package/dist/runtime/server/api/{blog/[slug].d.ts → cmspost/[...slug].d.ts} +0 -0
- /package/dist/runtime/server/api/page/{[slug].d.ts → [...slug].d.ts} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { defineEventHandler, setResponseStatus } from "h3";
|
|
2
|
-
import {
|
|
2
|
+
import { flowrixApi } from "../../../middleware/flowrix.js";
|
|
3
|
+
import { useRuntimeConfig } from "#imports";
|
|
3
4
|
export default defineEventHandler(async (event) => {
|
|
4
5
|
try {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
6
|
+
const config = useRuntimeConfig();
|
|
7
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
8
|
+
const apiConfig = {
|
|
9
|
+
...config,
|
|
10
|
+
cookies: rawCookies
|
|
11
|
+
};
|
|
12
|
+
const companyProfile = await flowrixApi.get(`company/profile`, apiConfig);
|
|
13
13
|
return companyProfile;
|
|
14
14
|
} catch (error) {
|
|
15
15
|
setResponseStatus(event, 500);
|
|
@@ -1,19 +1,52 @@
|
|
|
1
|
-
import { defineEventHandler, getRouterParam } from "h3";
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { defineEventHandler, getRouterParam, getQuery, createError, readBody, getCookie } from "h3";
|
|
2
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { useRuntimeConfig } from "#imports";
|
|
5
|
+
import { flowrixApi } from "../../../../../middleware/flowrix.js";
|
|
6
|
+
const CACHE_DIR = join("/tmp", ".cache", "nitro", "webfroms");
|
|
7
|
+
export const webfromCache = /* @__PURE__ */ new Map();
|
|
8
|
+
async function ensureCacheDir() {
|
|
9
|
+
try {
|
|
10
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
11
|
+
} catch (error) {
|
|
12
|
+
console.error("Error creating cache directory:", error);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
4
15
|
export default defineEventHandler(async (event) => {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
16
|
+
const slug = getRouterParam(event, "id");
|
|
17
|
+
const customerType = getCookie(event, "customertype") || "";
|
|
18
|
+
let query = getQuery(event);
|
|
19
|
+
const body = await readBody(event);
|
|
20
|
+
if (!slug) {
|
|
21
|
+
throw createError({ statusCode: 400, statusMessage: "Missing slug parameter" });
|
|
22
|
+
}
|
|
23
|
+
const cacheKey = `${slug}-${JSON.stringify(query)}`;
|
|
24
|
+
const fileName = cacheKey.replace(/[^a-zA-Z0-9-_]/g, "_");
|
|
25
|
+
const filePath = join(CACHE_DIR, `${fileName}-${customerType}.json`);
|
|
26
|
+
try {
|
|
27
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
28
|
+
const webfrom = JSON.parse(fileContent);
|
|
29
|
+
return webfrom;
|
|
30
|
+
} catch (error) {
|
|
8
31
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
32
|
+
try {
|
|
33
|
+
const config = useRuntimeConfig();
|
|
34
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
35
|
+
const apiConfig = {
|
|
36
|
+
...config,
|
|
37
|
+
cookies: rawCookies
|
|
38
|
+
};
|
|
39
|
+
const webfrom = await flowrixApi.get(`contact-center/webforms/${slug}/details`, apiConfig, {});
|
|
40
|
+
if (config.public.FLOWRIX_CACHE == true) {
|
|
41
|
+
await ensureCacheDir();
|
|
42
|
+
await writeFile(filePath, JSON.stringify(webfrom, null, 2), "utf-8");
|
|
15
43
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
44
|
+
return webfrom;
|
|
45
|
+
} catch (error) {
|
|
46
|
+
throw createError({
|
|
47
|
+
statusCode: 500,
|
|
48
|
+
statusMessage: `Failed to fetch webfrom for id: ${slug}`,
|
|
49
|
+
data: error.message
|
|
50
|
+
});
|
|
51
|
+
}
|
|
19
52
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<
|
|
1
|
+
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { defineEventHandler, readBody } from "h3";
|
|
2
|
-
import {
|
|
2
|
+
import { flowrixApi } from "../../../../middleware/flowrix.js";
|
|
3
|
+
import { useRuntimeConfig } from "#imports";
|
|
3
4
|
export default defineEventHandler(async (event) => {
|
|
4
5
|
const body = await readBody(event);
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
body: JSON.stringify(body)
|
|
6
|
+
const config = useRuntimeConfig();
|
|
7
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
8
|
+
const apiConfig = {
|
|
9
|
+
...config,
|
|
10
|
+
cookies: rawCookies
|
|
11
|
+
};
|
|
12
|
+
const webform = await flowrixApi.post(`posts`, apiConfig, {
|
|
13
|
+
body
|
|
14
14
|
});
|
|
15
15
|
return webform;
|
|
16
16
|
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { defineEventHandler, createError } from "h3";
|
|
2
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { flowrixApi } from "../../middleware/flowrix.js";
|
|
5
|
+
import { useRuntimeConfig } from "#imports";
|
|
6
|
+
const CACHE_DIR = join("/tmp", ".cache", "nitro", "company");
|
|
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 filePath = join(CACHE_DIR, `countries.json`);
|
|
16
|
+
try {
|
|
17
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
18
|
+
const countries = JSON.parse(fileContent);
|
|
19
|
+
return countries;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const config = useRuntimeConfig();
|
|
24
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
25
|
+
const apiConfig = {
|
|
26
|
+
...config,
|
|
27
|
+
cookies: rawCookies
|
|
28
|
+
};
|
|
29
|
+
const countries = await flowrixApi.get(`countries`, apiConfig);
|
|
30
|
+
if (config.public.FLOWRIX_CACHE == true) {
|
|
31
|
+
await ensureCacheDir();
|
|
32
|
+
await writeFile(filePath, JSON.stringify(countries, null, 2), "utf-8");
|
|
33
|
+
}
|
|
34
|
+
return countries;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
throw createError({
|
|
37
|
+
statusCode: 500,
|
|
38
|
+
statusMessage: `Failed to fetch countires `,
|
|
39
|
+
data: error.message
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const responseData = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/address/add`, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineEventHandler, getQuery } from "h3";
|
|
1
|
+
import { defineEventHandler, getQuery, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
const { addressId } = getQuery(event);
|
|
@@ -13,7 +13,7 @@ export default defineEventHandler(async (event) => {
|
|
|
13
13
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/address/${addressId}/delete`, {
|
|
14
14
|
method: "PATCH",
|
|
15
15
|
headers: {
|
|
16
|
-
"x-
|
|
16
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
17
17
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
18
18
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
19
19
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -13,7 +13,7 @@ export default defineEventHandler(async (event) => {
|
|
|
13
13
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/address/${addressId}/setshipping`, {
|
|
14
14
|
method: "POST",
|
|
15
15
|
headers: {
|
|
16
|
-
"x-
|
|
16
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
17
17
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
18
18
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
19
19
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -15,7 +15,7 @@ export default defineEventHandler(async (event) => {
|
|
|
15
15
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/address/${addressId}/update`, {
|
|
16
16
|
method: "PATCH",
|
|
17
17
|
headers: {
|
|
18
|
-
"x-
|
|
18
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
19
19
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
20
20
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
21
21
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
1
|
+
import { defineEventHandler, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
const { cardId } = getQuery(event);
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/cards/${cardId}`, {
|
|
7
7
|
method: "DELETE",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
1
|
+
import { defineEventHandler, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
try {
|
|
5
5
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/cards`, {
|
|
6
6
|
headers: {
|
|
7
|
-
"x-
|
|
7
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
8
8
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
9
9
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
10
10
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineEventHandler, readBody } from "h3";
|
|
1
|
+
import { defineEventHandler, readBody, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
const body = await readBody(event);
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/change-password`, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const checkoutResponse = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/checkout`, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
12
12
|
},
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
1
|
+
import { defineEventHandler, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
try {
|
|
5
5
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/orders`, {
|
|
6
6
|
headers: {
|
|
7
|
-
"x-
|
|
7
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
8
8
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
9
9
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
10
10
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/profile/update`, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
1
|
+
import { defineEventHandler, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
try {
|
|
5
5
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/quotations`, {
|
|
6
6
|
headers: {
|
|
7
|
-
"x-
|
|
7
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
8
8
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
9
9
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
10
10
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -5,7 +5,7 @@ export default defineEventHandler(async (event) => {
|
|
|
5
5
|
const search = await $fetch(`${process.env.FLOWRIX_API_BASE}customers/search`, {
|
|
6
6
|
method: "POST",
|
|
7
7
|
headers: {
|
|
8
|
-
"x-
|
|
8
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
9
9
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
10
10
|
"Origin": process.env.FLOWRIX_API_ORIGIN
|
|
11
11
|
},
|
|
@@ -11,7 +11,7 @@ export default defineEventHandler(async (event) => {
|
|
|
11
11
|
`${process.env.FLOWRIX_API_BASE}customer/orders/${orderNo}/tax-invoice`,
|
|
12
12
|
{
|
|
13
13
|
headers: {
|
|
14
|
-
"x-
|
|
14
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
15
15
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
16
16
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
17
17
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -7,7 +7,7 @@ export default defineEventHandler(async (event) => {
|
|
|
7
7
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/${listId}/${productSlug}/add`, {
|
|
8
8
|
method: "POST",
|
|
9
9
|
headers: {
|
|
10
|
-
"x-
|
|
10
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
11
11
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
12
12
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
13
13
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/add`, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -15,7 +15,7 @@ export default defineEventHandler(async (event) => {
|
|
|
15
15
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/${listId}/item/delete`, {
|
|
16
16
|
method: "POST",
|
|
17
17
|
headers: {
|
|
18
|
-
"x-
|
|
18
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
19
19
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
20
20
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
21
21
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -7,7 +7,7 @@ export default defineEventHandler(async (event) => {
|
|
|
7
7
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/${id}/delete`, {
|
|
8
8
|
method: "POST",
|
|
9
9
|
headers: {
|
|
10
|
-
"x-
|
|
10
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
11
11
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
12
12
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
13
13
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
1
|
+
import { defineEventHandler, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const accessTok = getCookie(event, "auth.token");
|
|
4
4
|
try {
|
|
5
5
|
const response = await $fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist`, {
|
|
6
6
|
headers: {
|
|
7
|
-
"x-
|
|
7
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
8
8
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
9
9
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
10
10
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
|
|
|
6
6
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/${listId}/products`, {
|
|
7
7
|
method: "GET",
|
|
8
8
|
headers: {
|
|
9
|
-
"x-
|
|
9
|
+
"x-public-key": process.env.FLOWRIX_API_KEY,
|
|
10
10
|
"x-api-secret": process.env.FLOWRIX_API_SECRET,
|
|
11
11
|
"Origin": process.env.FLOWRIX_API_ORIGIN,
|
|
12
12
|
"Authorization": `Bearer ${accessTok || ""}`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineEventHandler, readBody } from "h3";
|
|
1
|
+
import { defineEventHandler, readBody, getCookie } from "h3";
|
|
2
2
|
export default defineEventHandler(async (event) => {
|
|
3
3
|
const body = await readBody(event);
|
|
4
4
|
const accessTok = getCookie(event, "auth.token");
|
|
@@ -7,7 +7,7 @@ export default defineEventHandler(async (event) => {
|
|
|
7
7
|
const response = await fetch(`${process.env.FLOWRIX_API_BASE}customer/wishlist/${id}/update`, {
|
|
8
8
|
method: "POST",
|
|
9
9
|
headers: {
|
|
10
|
-
"x-
|
|
10
|
+
"x-public-key": process.env.FLOWRIX_API_KEY || "",
|
|
11
11
|
"x-api-secret": process.env.FLOWRIX_API_SECRET || "",
|
|
12
12
|
"Origin": process.env.FLOWRIX_API_ORIGIN || "",
|
|
13
13
|
"Authorization": `Bearer ${accessTok || ""}`,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { defineEventHandler, getQuery, createError, getCookie } from "h3";
|
|
2
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { useRuntimeConfig } from "#imports";
|
|
5
|
+
import { flowrixApi } from "../../middleware/flowrix.js";
|
|
6
|
+
const CACHE_DIR = join("/tmp", ".cache", "nitro", "catalog");
|
|
7
|
+
export const catelogCache = /* @__PURE__ */ new Map();
|
|
8
|
+
async function ensureCacheDir() {
|
|
9
|
+
try {
|
|
10
|
+
await mkdir(CACHE_DIR, { recursive: true });
|
|
11
|
+
} catch (error) {
|
|
12
|
+
console.error("Error creating cache directory:", error);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export default defineEventHandler(async (event) => {
|
|
16
|
+
let query = getQuery(event);
|
|
17
|
+
const customerType = getCookie(event, "customertype") || "";
|
|
18
|
+
const fileName = "featured";
|
|
19
|
+
const filePath = join(CACHE_DIR, `${fileName}-${customerType}.json`);
|
|
20
|
+
try {
|
|
21
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
22
|
+
const catelog = JSON.parse(fileContent);
|
|
23
|
+
return catelog;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const config = useRuntimeConfig();
|
|
28
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
29
|
+
const apiConfig = {
|
|
30
|
+
...config,
|
|
31
|
+
cookies: rawCookies
|
|
32
|
+
};
|
|
33
|
+
query = {
|
|
34
|
+
...query
|
|
35
|
+
};
|
|
36
|
+
const featured = await flowrixApi.get(`products/featured`, apiConfig, { query });
|
|
37
|
+
if (config.public.FLOWRIX_CACHE == true) {
|
|
38
|
+
await ensureCacheDir();
|
|
39
|
+
await writeFile(filePath, JSON.stringify(featured, null, 2), "utf-8");
|
|
40
|
+
}
|
|
41
|
+
return featured;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw createError({
|
|
44
|
+
statusCode: 500,
|
|
45
|
+
statusMessage: `Failed to fetch catelog for featured`,
|
|
46
|
+
data: error.message
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineEventHandler,
|
|
3
|
+
setResponseStatus,
|
|
4
|
+
setHeader
|
|
5
|
+
} from "h3";
|
|
6
|
+
import { useRuntimeConfig } from "#imports";
|
|
7
|
+
import { $fetch } from "ofetch";
|
|
8
|
+
export default defineEventHandler(async (event) => {
|
|
9
|
+
try {
|
|
10
|
+
const config = useRuntimeConfig();
|
|
11
|
+
const fileUrl = config.public.FLOWRIX_CDN + "robots.txt";
|
|
12
|
+
const fileContent = await $fetch(fileUrl);
|
|
13
|
+
setHeader(event, "Content-Type", "text/plain; charset=utf-8");
|
|
14
|
+
return fileContent;
|
|
15
|
+
} catch (error) {
|
|
16
|
+
setResponseStatus(event, 404);
|
|
17
|
+
setHeader(event, "Content-Type", "text/plain; charset=utf-8");
|
|
18
|
+
return `File not found`;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineEventHandler,
|
|
3
|
+
setResponseStatus,
|
|
4
|
+
setHeader
|
|
5
|
+
} from "h3";
|
|
6
|
+
import { useRuntimeConfig } from "#imports";
|
|
7
|
+
import { $fetch } from "ofetch";
|
|
8
|
+
export default defineEventHandler(async (event) => {
|
|
9
|
+
try {
|
|
10
|
+
let fullPath = event.path;
|
|
11
|
+
if (fullPath.startsWith("/")) {
|
|
12
|
+
fullPath = fullPath.slice(1);
|
|
13
|
+
}
|
|
14
|
+
const isGzip = fullPath.endsWith(".gz");
|
|
15
|
+
const config = useRuntimeConfig();
|
|
16
|
+
const cdnUrl = config.public.FLOWRIX_CDN + fullPath;
|
|
17
|
+
const buffer = await $fetch(cdnUrl, { responseType: "arrayBuffer" });
|
|
18
|
+
const data = Buffer.from(buffer);
|
|
19
|
+
if (isGzip) {
|
|
20
|
+
setHeader(event, "Content-Type", "application/xml; charset=utf-8");
|
|
21
|
+
setHeader(event, "Content-Encoding", "gzip");
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
setHeader(event, "Content-Type", "application/xml; charset=utf-8");
|
|
25
|
+
return data.toString();
|
|
26
|
+
} catch (error) {
|
|
27
|
+
setResponseStatus(event, 404);
|
|
28
|
+
setHeader(event, "Content-Type", "application/xml");
|
|
29
|
+
return `<?xml version="1.0"?>
|
|
30
|
+
<error>File not found</error>`;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<
|
|
1
|
+
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import { defineEventHandler } from "h3";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { defineEventHandler, readBody, setResponseStatus } from "h3";
|
|
2
|
+
import { flowrixApi } from "../../middleware/flowrix.js";
|
|
3
|
+
import { useRuntimeConfig } from "#imports";
|
|
4
|
+
export default defineEventHandler(async (event) => {
|
|
5
|
+
try {
|
|
6
|
+
const body = await readBody(event);
|
|
7
|
+
const config = useRuntimeConfig();
|
|
8
|
+
const rawCookies = event.req.headers.cookie || "";
|
|
9
|
+
const apiConfig = {
|
|
10
|
+
...config,
|
|
11
|
+
cookies: rawCookies
|
|
12
|
+
};
|
|
13
|
+
const location = await flowrixApi.post(`ip/location`, apiConfig, {
|
|
14
|
+
body: JSON.stringify(body)
|
|
15
|
+
});
|
|
16
|
+
return location;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
setResponseStatus(event, 500);
|
|
19
|
+
return { success: false, error: error.message };
|
|
20
|
+
}
|
|
13
21
|
});
|