@viu/emporix-sdk-react 2.9.0 → 2.11.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/dist/hooks.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- export { A as AddressMutationsApi, C as CartMutationsApi, a as CheckoutApi, b as CompanySwitcherApi, c as CouponActionVars, d as CustomerSessionApi, P as PasswordResetApi, U as UseAvailabilitiesOptions, e as UseAvailabilityOptions, f as UseCancelOrderVars, g as UseMyOrdersInfiniteOptions, h as UseMyOrdersOptions, i as UseOrderOptions, j as UseOrderTransitionVars, k as UseReorderResult, l as UseReorderVars, m as UseUpdateSalesOrderVars, n as UseVariantChildrenOptions, u as useActiveCart, o as useAddGroupMember, p as useAddToShoppingList, q as useAddressMutations, r as useAssignContact, s as useAvailabilities, t as useAvailability, v as useCancelOrder, w as useCart, x as useCartMutations, y as useCategories, z as useCategoriesInfinite, B as useCategory, D as useCategoryTree, E as useChangePassword, F as useCheckout, G as useCompany, H as useCompanyContacts, I as useCompanyGroups, J as useCompanyLocations, K as useCompanySwitcher, L as useCreateCart, M as useCreateCompany, N as useCreateLocation, O as useCreateReturn, Q as useCreateShoppingList, R as useCustomerAddresses, S as useCustomerSession, T as useDefaultSite, V as useDeleteCompany, W as useDeleteLocation, X as useDeleteShoppingList, Y as useMatchPrices, Z as useMatchPricesChunked, _ as useMyCompanies, $ as useMyOrders, a0 as useMyOrdersInfinite, a1 as useMyReturns, a2 as useMyRewardPoints, a3 as useMyRewardPointsSummary, a4 as useMySegmentCategories, a5 as useMySegmentCategoriesInfinite, a6 as useMySegmentCategoryTree, a7 as useMySegmentItems, a8 as useMySegmentProducts, a9 as useMySegmentProductsInfinite, aa as useMySegments, ab as useOrder, ac as useOrderTransition, ad as usePasswordReset, ae as usePaymentModes, af as useProduct, ag as useProductByCode, ah as useProductMedia, ai as useProductNameSearch, aj as useProductSearch, ak as useProducts, al as useProductsByCodes, am as useProductsInCategory, an as useProductsInCategoryInfinite, ao as useProductsInfinite, ap as useRedeemCoupon, aq as useRedeemOptions, ar as useRedeemRewardPoints, as as useRemoveFromShoppingList, at as useRemoveGroupMember, au as useReorder, av as useReturn, aw as useSalesOrder, ax as useSetShoppingListItemQuantity, ay as useShoppingLists, az as useSiteContext, aA as useSites, aB as useSubcategories, aC as useUnassignContact, aD as useUpdateCompany, aE as useUpdateContactAssignment, aF as useUpdateCustomer, aG as useUpdateLocation, aH as useUpdateSalesOrder, aI as useValidateCoupon, aJ as useVariantChildren } from './use-returns-D-P399mP.cjs';
1
+ export { A as AddressMutationsApi, C as CartMutationsApi, a as CheckoutApi, b as CompanySwitcherApi, c as CouponActionVars, d as CustomerSessionApi, I as InvokeCloudFunctionVars, P as PasswordResetApi, U as UseAvailabilitiesOptions, e as UseAvailabilityOptions, f as UseCancelOrderVars, g as UseMyOrdersInfiniteOptions, h as UseMyOrdersOptions, i as UseOrderOptions, j as UseOrderTransitionVars, k as UseReorderResult, l as UseReorderVars, m as UseUpdateSalesOrderVars, n as UseVariantChildrenOptions, u as useActiveCart, o as useAddGroupMember, p as useAddToShoppingList, q as useAddressMutations, r as useAssignContact, s as useAvailabilities, t as useAvailability, v as useCancelOrder, w as useCart, x as useCartMutations, y as useCategories, z as useCategoriesInfinite, B as useCategory, D as useCategoryTree, E as useChangePassword, F as useCheckout, G as useCloudFunction, H as useCompany, J as useCompanyContacts, K as useCompanyGroups, L as useCompanyLocations, M as useCompanySwitcher, N as useCreateCart, O as useCreateCompany, Q as useCreateLocation, R as useCreateReturn, S as useCreateShoppingList, T as useCustomerAddresses, V as useCustomerSession, W as useDefaultSite, X as useDeleteCompany, Y as useDeleteLocation, Z as useDeleteShoppingList, _ as useInvokeCloudFunction, $ as useMatchPrices, a0 as useMatchPricesChunked, a1 as useMyCompanies, a2 as useMyOrders, a3 as useMyOrdersInfinite, a4 as useMyReturns, a5 as useMyRewardPoints, a6 as useMyRewardPointsSummary, a7 as useMySegmentCategories, a8 as useMySegmentCategoriesInfinite, a9 as useMySegmentCategoryTree, aa as useMySegmentItems, ab as useMySegmentProducts, ac as useMySegmentProductsInfinite, ad as useMySegments, ae as useOrder, af as useOrderTransition, ag as usePasswordReset, ah as usePaymentModes, ai as useProduct, aj as useProductByCode, ak as useProductMedia, al as useProductNameSearch, am as useProductSearch, an as useProducts, ao as useProductsByCodes, ap as useProductsInCategory, aq as useProductsInCategoryInfinite, ar as useProductsInfinite, as as useRedeemCoupon, at as useRedeemOptions, au as useRedeemRewardPoints, av as useRemoveFromShoppingList, aw as useRemoveGroupMember, ax as useReorder, ay as useReturn, az as useSalesOrder, aA as useSetShoppingListItemQuantity, aB as useShoppingLists, aC as useSiteContext, aD as useSites, aE as useSubcategories, aF as useUnassignContact, aG as useUpdateCompany, aH as useUpdateContactAssignment, aI as useUpdateCustomer, aJ as useUpdateLocation, aK as useUpdateSalesOrder, aL as useValidateCoupon, aM as useVariantChildren } from './use-returns-DDH_HnPS.cjs';
2
2
  import { UseQueryResult, UseMutationResult } from '@tanstack/react-query';
3
3
  import { ApprovalPatch, Approval, ApprovalList, ApprovalCreated, ApprovalInput } from '@viu/emporix-sdk';
4
- import './provider-WHISqTG2.cjs';
4
+ import './provider-CfgMAu8B.cjs';
5
5
  import 'react';
6
6
  import './storage.cjs';
7
7
 
package/dist/hooks.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { A as AddressMutationsApi, C as CartMutationsApi, a as CheckoutApi, b as CompanySwitcherApi, c as CouponActionVars, d as CustomerSessionApi, P as PasswordResetApi, U as UseAvailabilitiesOptions, e as UseAvailabilityOptions, f as UseCancelOrderVars, g as UseMyOrdersInfiniteOptions, h as UseMyOrdersOptions, i as UseOrderOptions, j as UseOrderTransitionVars, k as UseReorderResult, l as UseReorderVars, m as UseUpdateSalesOrderVars, n as UseVariantChildrenOptions, u as useActiveCart, o as useAddGroupMember, p as useAddToShoppingList, q as useAddressMutations, r as useAssignContact, s as useAvailabilities, t as useAvailability, v as useCancelOrder, w as useCart, x as useCartMutations, y as useCategories, z as useCategoriesInfinite, B as useCategory, D as useCategoryTree, E as useChangePassword, F as useCheckout, G as useCompany, H as useCompanyContacts, I as useCompanyGroups, J as useCompanyLocations, K as useCompanySwitcher, L as useCreateCart, M as useCreateCompany, N as useCreateLocation, O as useCreateReturn, Q as useCreateShoppingList, R as useCustomerAddresses, S as useCustomerSession, T as useDefaultSite, V as useDeleteCompany, W as useDeleteLocation, X as useDeleteShoppingList, Y as useMatchPrices, Z as useMatchPricesChunked, _ as useMyCompanies, $ as useMyOrders, a0 as useMyOrdersInfinite, a1 as useMyReturns, a2 as useMyRewardPoints, a3 as useMyRewardPointsSummary, a4 as useMySegmentCategories, a5 as useMySegmentCategoriesInfinite, a6 as useMySegmentCategoryTree, a7 as useMySegmentItems, a8 as useMySegmentProducts, a9 as useMySegmentProductsInfinite, aa as useMySegments, ab as useOrder, ac as useOrderTransition, ad as usePasswordReset, ae as usePaymentModes, af as useProduct, ag as useProductByCode, ah as useProductMedia, ai as useProductNameSearch, aj as useProductSearch, ak as useProducts, al as useProductsByCodes, am as useProductsInCategory, an as useProductsInCategoryInfinite, ao as useProductsInfinite, ap as useRedeemCoupon, aq as useRedeemOptions, ar as useRedeemRewardPoints, as as useRemoveFromShoppingList, at as useRemoveGroupMember, au as useReorder, av as useReturn, aw as useSalesOrder, ax as useSetShoppingListItemQuantity, ay as useShoppingLists, az as useSiteContext, aA as useSites, aB as useSubcategories, aC as useUnassignContact, aD as useUpdateCompany, aE as useUpdateContactAssignment, aF as useUpdateCustomer, aG as useUpdateLocation, aH as useUpdateSalesOrder, aI as useValidateCoupon, aJ as useVariantChildren } from './use-returns-cBvLR-tm.js';
1
+ export { A as AddressMutationsApi, C as CartMutationsApi, a as CheckoutApi, b as CompanySwitcherApi, c as CouponActionVars, d as CustomerSessionApi, I as InvokeCloudFunctionVars, P as PasswordResetApi, U as UseAvailabilitiesOptions, e as UseAvailabilityOptions, f as UseCancelOrderVars, g as UseMyOrdersInfiniteOptions, h as UseMyOrdersOptions, i as UseOrderOptions, j as UseOrderTransitionVars, k as UseReorderResult, l as UseReorderVars, m as UseUpdateSalesOrderVars, n as UseVariantChildrenOptions, u as useActiveCart, o as useAddGroupMember, p as useAddToShoppingList, q as useAddressMutations, r as useAssignContact, s as useAvailabilities, t as useAvailability, v as useCancelOrder, w as useCart, x as useCartMutations, y as useCategories, z as useCategoriesInfinite, B as useCategory, D as useCategoryTree, E as useChangePassword, F as useCheckout, G as useCloudFunction, H as useCompany, J as useCompanyContacts, K as useCompanyGroups, L as useCompanyLocations, M as useCompanySwitcher, N as useCreateCart, O as useCreateCompany, Q as useCreateLocation, R as useCreateReturn, S as useCreateShoppingList, T as useCustomerAddresses, V as useCustomerSession, W as useDefaultSite, X as useDeleteCompany, Y as useDeleteLocation, Z as useDeleteShoppingList, _ as useInvokeCloudFunction, $ as useMatchPrices, a0 as useMatchPricesChunked, a1 as useMyCompanies, a2 as useMyOrders, a3 as useMyOrdersInfinite, a4 as useMyReturns, a5 as useMyRewardPoints, a6 as useMyRewardPointsSummary, a7 as useMySegmentCategories, a8 as useMySegmentCategoriesInfinite, a9 as useMySegmentCategoryTree, aa as useMySegmentItems, ab as useMySegmentProducts, ac as useMySegmentProductsInfinite, ad as useMySegments, ae as useOrder, af as useOrderTransition, ag as usePasswordReset, ah as usePaymentModes, ai as useProduct, aj as useProductByCode, ak as useProductMedia, al as useProductNameSearch, am as useProductSearch, an as useProducts, ao as useProductsByCodes, ap as useProductsInCategory, aq as useProductsInCategoryInfinite, ar as useProductsInfinite, as as useRedeemCoupon, at as useRedeemOptions, au as useRedeemRewardPoints, av as useRemoveFromShoppingList, aw as useRemoveGroupMember, ax as useReorder, ay as useReturn, az as useSalesOrder, aA as useSetShoppingListItemQuantity, aB as useShoppingLists, aC as useSiteContext, aD as useSites, aE as useSubcategories, aF as useUnassignContact, aG as useUpdateCompany, aH as useUpdateContactAssignment, aI as useUpdateCustomer, aJ as useUpdateLocation, aK as useUpdateSalesOrder, aL as useValidateCoupon, aM as useVariantChildren } from './use-returns-vxGoBH1I.js';
2
2
  import { UseQueryResult, UseMutationResult } from '@tanstack/react-query';
3
3
  import { ApprovalPatch, Approval, ApprovalList, ApprovalCreated, ApprovalInput } from '@viu/emporix-sdk';
4
- import './provider-CLNEKOuu.js';
4
+ import './provider--y2yz3Jj.js';
5
5
  import 'react';
6
6
  import './storage.js';
7
7
 
package/dist/hooks.js CHANGED
@@ -1,5 +1,5 @@
1
- export { useActiveCart, useAddGroupMember, useAddToShoppingList, useAddressMutations, useApproval, useApprovals, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateApproval, useCreateCart, useCreateCompany, useCreateLocation, useCreateReturn, useCreateShoppingList, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useDeleteShoppingList, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMyReturns, useMyRewardPoints, useMyRewardPointsSummary, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductNameSearch, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useRedeemCoupon, useRedeemOptions, useRedeemRewardPoints, useRemoveFromShoppingList, useRemoveGroupMember, useReorder, useReturn, useSalesOrder, useSetShoppingListItemQuantity, useShoppingLists, useSiteContext, useSites, useSubcategories, useUnassignContact, useUpdateApproval, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useValidateCoupon, useVariantChildren } from './chunk-3W3TIKRV.js';
2
- import './chunk-JZRSYM3W.js';
1
+ export { useActiveCart, useAddGroupMember, useAddToShoppingList, useAddressMutations, useApproval, useApprovals, useAssignContact, useAvailabilities, useAvailability, useCancelOrder, useCart, useCartMutations, useCategories, useCategoriesInfinite, useCategory, useCategoryTree, useChangePassword, useCheckout, useCloudFunction, useCompany, useCompanyContacts, useCompanyGroups, useCompanyLocations, useCompanySwitcher, useCreateApproval, useCreateCart, useCreateCompany, useCreateLocation, useCreateReturn, useCreateShoppingList, useCustomerAddresses, useCustomerSession, useDefaultSite, useDeleteCompany, useDeleteLocation, useDeleteShoppingList, useInvokeCloudFunction, useMatchPrices, useMatchPricesChunked, useMyCompanies, useMyOrders, useMyOrdersInfinite, useMyReturns, useMyRewardPoints, useMyRewardPointsSummary, useMySegmentCategories, useMySegmentCategoriesInfinite, useMySegmentCategoryTree, useMySegmentItems, useMySegmentProducts, useMySegmentProductsInfinite, useMySegments, useOrder, useOrderTransition, usePasswordReset, usePaymentModes, useProduct, useProductByCode, useProductMedia, useProductNameSearch, useProductSearch, useProducts, useProductsByCodes, useProductsInCategory, useProductsInCategoryInfinite, useProductsInfinite, useRedeemCoupon, useRedeemOptions, useRedeemRewardPoints, useRemoveFromShoppingList, useRemoveGroupMember, useReorder, useReturn, useSalesOrder, useSetShoppingListItemQuantity, useShoppingLists, useSiteContext, useSites, useSubcategories, useUnassignContact, useUpdateApproval, useUpdateCompany, useUpdateContactAssignment, useUpdateCustomer, useUpdateLocation, useUpdateSalesOrder, useValidateCoupon, useVariantChildren } from './chunk-KLLY4YD7.js';
2
+ import './chunk-SMJ5IQZJ.js';
3
3
  import './chunk-FBQY2N7S.js';
4
4
  //# sourceMappingURL=hooks.js.map
5
5
  //# sourceMappingURL=hooks.js.map
package/dist/index.cjs CHANGED
@@ -555,12 +555,14 @@ function SiteContextProvider({
555
555
  if (fromStorage !== null) return fromStorage;
556
556
  return client.config?.credentials?.storefront?.context?.siteCode ?? null;
557
557
  });
558
- const [currency, setCurrency] = react.useState(null);
558
+ const [currency, setCurrencyState] = react.useState(
559
+ () => client.config?.credentials?.storefront?.context?.currency ?? null
560
+ );
559
561
  const [targetLocation, setTargetLocation] = react.useState(null);
560
562
  const [isSwitching, setIsSwitching] = react.useState(false);
561
563
  const [switchError, setSwitchError] = react.useState(null);
562
564
  react.useEffect(() => {
563
- if (!siteCode || currency !== null) return;
565
+ if (!siteCode || currency !== null && targetLocation !== null) return;
564
566
  let cancelled = false;
565
567
  const token = storage.getCustomerToken();
566
568
  const authCtx = token ? emporixSdk.auth.customer(token) : emporixSdk.auth.anonymous();
@@ -575,7 +577,7 @@ function SiteContextProvider({
575
577
  staleTime: 5 * 6e4
576
578
  }).then((site) => {
577
579
  if (cancelled) return;
578
- setCurrency(site.currency);
580
+ if (currency === null) setCurrencyState(site.currency);
579
581
  setTargetLocation(site.homeBase?.address?.country ?? null);
580
582
  }).catch(() => {
581
583
  });
@@ -591,7 +593,7 @@ function SiteContextProvider({
591
593
  setSwitchError(null);
592
594
  void qc.invalidateQueries({ queryKey: ["emporix"] });
593
595
  if (code === null) {
594
- setCurrency(null);
596
+ setCurrencyState(null);
595
597
  setTargetLocation(null);
596
598
  return;
597
599
  }
@@ -611,7 +613,7 @@ function SiteContextProvider({
611
613
  });
612
614
  const nextCurrency = site.currency;
613
615
  const nextTarget = site.homeBase?.address?.country ?? null;
614
- setCurrency(nextCurrency);
616
+ setCurrencyState(nextCurrency);
615
617
  setTargetLocation(nextTarget);
616
618
  await client.sessionContext.patch(
617
619
  {
@@ -629,16 +631,40 @@ function SiteContextProvider({
629
631
  },
630
632
  [client, storage, qc]
631
633
  );
634
+ const setCurrency = react.useCallback(
635
+ async (next) => {
636
+ storage.setCartId(null);
637
+ setCurrencyState(next);
638
+ setSwitchError(null);
639
+ client.setStorefrontContext({ currency: next });
640
+ void qc.invalidateQueries({ queryKey: ["emporix"] });
641
+ setIsSwitching(true);
642
+ try {
643
+ const token = storage.getCustomerToken();
644
+ const authCtx = token ? emporixSdk.auth.customer(token) : emporixSdk.auth.anonymous();
645
+ await client.sessionContext.patch(
646
+ { currency: next, ...siteCode ? { siteCode } : {} },
647
+ authCtx
648
+ );
649
+ } catch (e) {
650
+ setSwitchError(e instanceof Error ? e : new Error(String(e)));
651
+ } finally {
652
+ setIsSwitching(false);
653
+ }
654
+ },
655
+ [client, storage, qc, siteCode]
656
+ );
632
657
  const value = react.useMemo(
633
658
  () => ({
634
659
  siteCode,
635
660
  currency,
636
661
  targetLocation,
637
662
  setSite,
663
+ setCurrency,
638
664
  isSwitching,
639
665
  switchError
640
666
  }),
641
- [siteCode, currency, targetLocation, setSite, isSwitching, switchError]
667
+ [siteCode, currency, targetLocation, setSite, setCurrency, isSwitching, switchError]
642
668
  );
643
669
  return /* @__PURE__ */ jsxRuntime.jsx(EmporixSiteContext.Provider, { value, children });
644
670
  }
@@ -1800,6 +1826,37 @@ function useCompanySwitcher() {
1800
1826
  clear: clearFn
1801
1827
  };
1802
1828
  }
1829
+ function useInvokeCloudFunction() {
1830
+ const { client, storage } = useEmporix();
1831
+ return reactQuery.useMutation({
1832
+ mutationFn: (vars) => {
1833
+ const { functionId, auth: authOverride, ...options } = vars;
1834
+ const token = storage.getCustomerToken();
1835
+ const authCtx = authOverride ?? (token ? emporixSdk.auth.customer(token) : emporixSdk.auth.anonymous());
1836
+ return client.cloudFunctions.invoke(functionId, options, authCtx);
1837
+ }
1838
+ });
1839
+ }
1840
+ function useCloudFunction(functionId, options, queryOptions) {
1841
+ const { client, storage } = useEmporix();
1842
+ const token = storage.getCustomerToken();
1843
+ const { auth: authOverride, ...invokeOptions } = options ?? {};
1844
+ const authCtx = authOverride ?? (token ? emporixSdk.auth.customer(token) : emporixSdk.auth.anonymous());
1845
+ return reactQuery.useQuery({
1846
+ queryKey: emporixKey(
1847
+ "cloud-function",
1848
+ [functionId ?? null, invokeOptions.path ?? null, invokeOptions.query ?? null],
1849
+ { tenant: client.tenant, authKind: token ? "customer" : "anonymous" }
1850
+ ),
1851
+ enabled: (queryOptions?.enabled ?? true) && functionId !== void 0,
1852
+ ...queryOptions?.staleTime !== void 0 ? { staleTime: queryOptions.staleTime } : {},
1853
+ queryFn: () => client.cloudFunctions.invoke(
1854
+ functionId,
1855
+ { method: "GET", ...invokeOptions },
1856
+ authCtx
1857
+ )
1858
+ });
1859
+ }
1803
1860
  function useMyOrders(options = {}) {
1804
1861
  const { client, storage } = useEmporix();
1805
1862
  const { activeCompany } = useActiveCompany();
@@ -1974,12 +2031,12 @@ function useUpdateSalesOrder() {
1974
2031
  const qc = reactQuery.useQueryClient();
1975
2032
  return reactQuery.useMutation({
1976
2033
  mutationKey: ["emporix", "salesorders", "update"],
1977
- mutationFn: async ({ orderId, patch, auth: auth26, recalculate }) => {
1978
- if (!auth26) throw new Error("useUpdateSalesOrder: requires an auth context");
2034
+ mutationFn: async ({ orderId, patch, auth: auth27, recalculate }) => {
2035
+ if (!auth27) throw new Error("useUpdateSalesOrder: requires an auth context");
1979
2036
  return client.salesOrders.update(
1980
2037
  orderId,
1981
2038
  patch,
1982
- auth26,
2039
+ auth27,
1983
2040
  recalculate !== void 0 ? { recalculate } : {}
1984
2041
  );
1985
2042
  },
@@ -2186,6 +2243,7 @@ exports.useCategory = useCategory;
2186
2243
  exports.useCategoryTree = useCategoryTree;
2187
2244
  exports.useChangePassword = useChangePassword;
2188
2245
  exports.useCheckout = useCheckout;
2246
+ exports.useCloudFunction = useCloudFunction;
2189
2247
  exports.useCompany = useCompany;
2190
2248
  exports.useCompanyContacts = useCompanyContacts;
2191
2249
  exports.useCompanyGroups = useCompanyGroups;
@@ -2205,6 +2263,7 @@ exports.useDeleteShoppingList = useDeleteShoppingList;
2205
2263
  exports.useEmporix = useEmporix;
2206
2264
  exports.useEmporixErrorHandler = useEmporixErrorHandler;
2207
2265
  exports.useEmporixTelemetry = useEmporixTelemetry;
2266
+ exports.useInvokeCloudFunction = useInvokeCloudFunction;
2208
2267
  exports.useMatchPrices = useMatchPrices;
2209
2268
  exports.useMatchPricesChunked = useMatchPricesChunked;
2210
2269
  exports.useMyCompanies = useMyCompanies;