npm-pkg-hook 1.12.4 → 1.12.8
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/index.js +57529 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +57315 -0
- package/dist/index.mjs.map +1 -0
- package/eslint.config.mts +153 -0
- package/package.json +30 -45
- package/src/config/client/errors.ts +39 -0
- package/src/hooks/addTenMinutes/{index.js → index.ts} +4 -4
- package/src/hooks/calculateLogLatHaversine/{index.js → index.ts} +15 -4
- package/src/hooks/completeSchedules/{index.js → index.ts} +4 -4
- package/src/hooks/convertToMilitaryTime/index.ts +18 -0
- package/src/hooks/generateStoreURL/index.ts +41 -0
- package/src/hooks/generateTemplate/{index.js → index.ts} +15 -11
- package/src/hooks/getCardType/{index.js → index.ts} +1 -1
- package/src/hooks/getCategoriesWithProduct/{index.js → index.ts} +7 -7
- package/src/hooks/getGlobalSession/index.ts +69 -0
- package/src/hooks/getSession/index.ts +72 -0
- package/src/hooks/getTodayTimestamps/{index.js → index.ts} +18 -12
- package/src/hooks/getTotalHours/index.ts +76 -0
- package/src/hooks/handleLogin/{index.js → index.ts} +4 -0
- package/src/hooks/index.ts +8 -2
- package/src/hooks/statusOpenStores/helpers/{index.js → index.ts} +24 -1
- package/src/hooks/statusOpenStores/index.ts +221 -0
- package/src/hooks/updateExtProductFoodsOptional/{index.js → index.ts} +12 -3
- package/src/hooks/useAcumulateDate/index.ts +18 -0
- package/src/hooks/useAllStoresPendingToRegister/{index.js → index.ts} +3 -0
- package/src/hooks/useAmountInput/index.ts +42 -32
- package/src/hooks/useAnimationText/{index.jsx → index.ts} +2 -2
- package/src/hooks/useAsideCart/{index.js → index.ts} +22 -19
- package/src/hooks/useBanner/{index.js → index.ts} +2 -1
- package/src/hooks/useCart/useCart/helpers/{index.js → index.ts} +10 -6
- package/src/hooks/useCart/useCart/{index.js → index.ts} +29 -17
- package/src/hooks/useCart/useGetCart/{index.js → index.ts} +2 -1
- package/src/hooks/useCatWithProduct/{index.js → index.ts} +11 -5
- package/src/hooks/useCatWithProduct/types/index.ts +104 -0
- package/src/hooks/useCatWithProductClient/{index.js → index.ts} +3 -2
- package/src/hooks/useCategoriesProduct/{index.js → index.ts} +2 -1
- package/src/hooks/useCategoryInStore/index.ts +167 -0
- package/src/hooks/useCategoryStore/{index.js → index.ts} +2 -1
- package/src/hooks/useCategoryStore/{queries.js → queries.ts} +2 -2
- package/src/hooks/useChartData/{index.js → index.ts} +9 -8
- package/src/hooks/useChartData/useChartData/{index.js → index.ts} +31 -30
- package/src/hooks/useChartData/useChartDataAllOrders/{index.js → index.ts} +2 -2
- package/src/hooks/useCheckbox/{index.js → index.ts} +1 -1
- package/src/hooks/useCities/{index.js → index.ts} +2 -1
- package/src/hooks/useClients/{index.js → index.ts} +2 -1
- package/src/hooks/useClients/{queries.js → queries.ts} +7 -4
- package/src/hooks/useColorByLetters/helpers/{alea.js → alea.ts} +19 -0
- package/src/hooks/useColorByLetters/helpers/{index.js → index.ts} +5 -1
- package/src/hooks/useColorByLetters/helpers/{mersenne_twister.js → mersenne_twister.ts} +1 -1
- package/src/hooks/useColorByLetters/{index.js → index.ts} +3 -6
- package/src/hooks/useConnection/{index.js → index.ts} +3 -3
- package/src/hooks/useCountries/{index.js → index.ts} +2 -1
- package/src/hooks/useCreateOrderStatusType/index.ts +8 -6
- package/src/hooks/useCreateProduct/helpers/{index.js → index.ts} +1 -1
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/{index.js → index.ts} +1 -1
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/{index.js → index.ts} +14 -8
- package/src/hooks/useCreateProduct/{index.js → index.ts} +22 -19
- package/src/hooks/useCreateStorePendingToRegister/{index.js → index.ts} +5 -1
- package/src/hooks/useDeleteExtraProductFoods/{index.js → index.ts} +2 -1
- package/src/hooks/useDeleteSubProductOptional/{index.js → index.ts} +5 -3
- package/src/hooks/useDeliveryTime/{index.js → index.ts} +3 -1
- package/src/hooks/useDepartments/{index.js → index.ts} +2 -1
- package/src/hooks/useDessert/{index.js → index.ts} +56 -52
- package/src/hooks/useDessertWithPrice/helpers/{index.js → index.ts} +4 -4
- package/src/hooks/useDessertWithPrice/{index.js → index.ts} +34 -26
- package/src/hooks/useDevWS/index.ts +43 -43
- package/src/hooks/useDevices/{useGetDevices.js → useGetDevices.ts} +3 -3
- package/src/hooks/useDevices/{useRegisterDevices.js → useRegisterDevices.ts} +5 -5
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +17 -17
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +4 -2
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +3 -2
- package/src/hooks/useDrag/{index.js → index.ts} +16 -0
- package/src/hooks/useDropzone/{index.js → index.ts} +2 -2
- package/src/hooks/useDynamicAuth/{index.js → index.ts} +2 -1
- package/src/hooks/useEditCategory/{index.js → index.ts} +5 -5
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +28 -0
- package/src/hooks/useEditOneExtProductFoodOptional/{queries.js → queries.ts} +2 -2
- package/src/hooks/useEditSubProductOptional/index.ts +12 -0
- package/src/hooks/useEmployee/{index.js → index.ts} +2 -1
- package/src/hooks/useEmployee/{queries.js → queries.ts} +1 -1
- package/src/hooks/useEmployee/{useCreateEmployee.js → useCreateEmployee.ts} +6 -2
- package/src/hooks/useFavoriteStores/{index.js → index.ts} +5 -3
- package/src/hooks/useFetchMoreInteractions/index.jsx +26 -26
- package/src/hooks/useFilterConfigs/index.ts +173 -0
- package/src/hooks/useFingerprintjs/{index.js → index.ts} +29 -4
- package/src/hooks/useFormTools/{index.js → index.ts} +38 -11
- package/src/hooks/useFormatDate/{index.js → index.ts} +10 -5
- package/src/hooks/useFullScreenMode/{index.js → index.ts} +1 -5
- package/src/hooks/useGetAllLocationUser/{index.js → index.ts} +2 -1
- package/src/hooks/useGetAllLocationUser/{queries.js → queries.ts} +2 -2
- package/src/hooks/{useSales/useGetAllSales/index.js → useGetAllSales/index.ts} +3 -2
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/{index.js → index.ts} +2 -1
- package/src/hooks/useGetFoodRecomended/{index.js → index.ts} +2 -1
- package/src/hooks/useGetMinPrice/{index.js → index.ts} +2 -1
- package/src/hooks/useGetOneStoreRating/{index.js → index.ts} +2 -1
- package/src/hooks/useGetStoreCookie/{index.js → index.ts} +1 -1
- package/src/hooks/useGoogleLogin/{index.js → index.ts} +14 -5
- package/src/hooks/useHover/{index.js → index.ts} +3 -0
- package/src/hooks/useImageOptimization/{index.js → index.ts} +4 -0
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +25 -9
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +5 -4
- package/src/hooks/useImageUploaderProduct/index.ts +227 -224
- package/src/hooks/useImageWeight/{index.js → index.ts} +4 -0
- package/src/hooks/useImagesStore/{index.js → index.ts} +7 -5
- package/src/hooks/useImagesStore/{queries.js → queries.ts} +1 -1
- package/src/hooks/useIncomingOrders/{index.js → index.ts} +2 -1
- package/src/hooks/useIncomingOrders/{queries.js → queries.ts} +1 -1
- package/src/hooks/useIntersection/{index.js → index.ts} +1 -1
- package/src/hooks/useInventory/{queries.js → queries.ts} +2 -2
- package/src/hooks/useInventory/{useGetProductsInStock.js → useGetProductsInStock.ts} +2 -1
- package/src/hooks/useLazyScript/{index.js → index.ts} +3 -0
- package/src/hooks/useLocalSorage/{index.js → index.ts} +3 -3
- package/src/hooks/useLocationManager/{index.js → index.ts} +3 -3
- package/src/hooks/useLoginEmployeeInStore/{index.js → index.ts} +1 -1
- package/src/hooks/useLogout/helpers/BroadcastChannel.ts +74 -0
- package/src/hooks/useLogout/helpers/{apiBaseUrl.js → apiBaseUrl.ts} +4 -0
- package/src/hooks/useLogout/helpers/{fetchData.js → fetchData.ts} +10 -1
- package/src/hooks/useLogout/helpers/{getCsrfToken.js → getCsrfToken.ts} +8 -1
- package/src/hooks/useLogout/helpers/{index.js → index.ts} +14 -6
- package/src/hooks/useLogout/helpers/{logger.js → logger.ts} +26 -8
- package/src/hooks/useLogout/helpers/{parseUrl.js → parseUrl.ts} +5 -2
- package/src/hooks/useLogout/{index.js → index.ts} +29 -20
- package/src/hooks/useManageNewOrder/helpers/{index.js → index.ts} +1 -1
- package/src/hooks/useManageNewOrder/{index.js → index.ts} +6 -4
- package/src/hooks/useManageQueryParams/index.ts +120 -0
- package/src/hooks/useModules/helpers/{validateModules.js → validateModules.ts} +1 -1
- package/src/hooks/useModules/index.ts +124 -0
- package/src/hooks/useMouse/index.ts +23 -18
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +1 -1
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +7 -5
- package/src/hooks/useOrders/{queries.js → queries.ts} +30 -20
- package/src/hooks/useOrders/useChangeOrderState/index.ts +79 -76
- package/src/hooks/useOrders/useOrdersFromStore/index.ts +4 -3
- package/src/hooks/usePaymentMethod/index.ts +3 -0
- package/src/hooks/usePaymentMethod/paymentMethod.gql.ts +62 -0
- package/src/hooks/usePaymentMethod/paymentMethod.types.ts +28 -0
- package/src/hooks/usePaymentMethod/useCreatePaymentMethod/index.ts +25 -0
- package/src/hooks/usePaymentMethod/useGetAllPaymentMethods/index.ts +19 -0
- package/src/hooks/usePaymentMethod/useGetPaymentMethod/index.ts +26 -0
- package/src/hooks/usePrintSaleTicket/index.ts +4 -0
- package/src/hooks/useProductsFood/{index.js → index.ts} +115 -27
- package/src/hooks/useProductsFood/{queriesStore.js → queriesStore.ts} +1 -1
- package/src/hooks/useProductsFood/{useEditProduct.js → useEditProduct.ts} +2 -1
- package/src/hooks/useProductsFood/{usetagsProducts.js → usetagsProducts.ts} +6 -3
- package/src/hooks/useProviders/useProvidersCreateStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProviders/useProvidersDataStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProvidersStore/{index.js → index.ts} +2 -1
- package/src/hooks/usePushNotificationOrder/{index.js → index.ts} +1 -1
- package/src/hooks/usePushNotifications/helpers/{index.js → index.ts} +9 -0
- package/src/hooks/usePushNotifications/{index.js → index.ts} +2 -1
- package/src/hooks/useQueryLocationsMap/{index.js → index.ts} +2 -1
- package/src/hooks/useRatingArrayData/{index.js → index.ts} +4 -4
- package/src/hooks/useRatingArrayData/{queries.js → queries.ts} +1 -1
- package/src/hooks/useRemoveExtraProductFoodsOptional/{index.js → index.ts} +2 -1
- package/src/hooks/useReport/{index.js → index.ts} +2 -1
- package/src/hooks/useReport/{queries.js → queries.ts} +2 -53
- package/src/hooks/useRestaurant/helpers/{index.js → index.ts} +4 -0
- package/src/hooks/useRestaurant/helpers/{manageStatusOpen.js → manageStatusOpen.ts} +1 -1
- package/src/hooks/useRestaurant/{index.js → index.ts} +5 -3
- package/src/hooks/useRoads/{index.js → index.ts} +2 -1
- package/src/hooks/useRoles/{queries.js → queries.ts} +1 -1
- package/src/hooks/useRoles/{useCreateRole.js → useCreateRole.ts} +4 -1
- package/src/hooks/useRoles/{useGetRoles.js → useGetRoles.ts} +2 -1
- package/src/hooks/useSales/helpers/add-product.utils.ts +120 -0
- package/src/hooks/useSales/helpers/apply-discount-to-cart.utils.ts +292 -0
- package/src/hooks/useSales/helpers/comment-product.utils.ts +41 -0
- package/src/hooks/useSales/helpers/constants/index.ts +38 -0
- package/src/hooks/useSales/helpers/extras.utils.ts +42 -0
- package/src/hooks/useSales/helpers/filterProductsByCarProId.utils.ts +17 -0
- package/src/hooks/useSales/helpers/increment-product-quantity.utils.ts +76 -0
- package/src/hooks/useSales/helpers/index.ts +3 -0
- package/src/hooks/useSales/helpers/initializer.utils.ts +22 -0
- package/src/hooks/useSales/helpers/isStockInsufficient.ts +3 -0
- package/src/hooks/useSales/helpers/remove-product.utils.test.ts +49 -0
- package/src/hooks/useSales/helpers/remove-product.utils.ts +34 -0
- package/src/hooks/useSales/helpers/resolveProduct.ts +29 -0
- package/src/hooks/useSales/helpers/useAddToCart.ts +64 -0
- package/src/hooks/useSales/{index.js → index.ts} +559 -522
- package/src/hooks/useSales/{queries.js → queries.ts} +187 -79
- package/src/hooks/useSales/types/index.ts +206 -0
- package/src/hooks/useSales/types/use-sales.types.ts +8 -0
- package/src/hooks/useSales/{useGetSale.js → useGetSale.ts} +10 -2
- package/src/hooks/useSales/{useTotalSales.js → useTotalSales.ts} +2 -1
- package/src/hooks/useSaveAvailableProduct/helpers/{index.js → index.ts} +4 -4
- package/src/hooks/useSaveAvailableProduct/{index.js → index.ts} +2 -1
- package/src/hooks/useSaveLocation/{index.js → index.ts} +2 -1
- package/src/hooks/useSaveLocation/{queries.js → queries.ts} +1 -1
- package/src/hooks/useSchedule/{index.jsx → index.ts} +14 -1
- package/src/hooks/useSchedule/{index.js → schedule.ts} +2 -1
- package/src/hooks/useScheduleData/{index.js → index.ts} +21 -9
- package/src/hooks/useSetImageProducts/{index.js → index.ts} +4 -2
- package/src/hooks/useSetupSchedule/{index.js → index.ts} +40 -28
- package/src/hooks/useStatusOpenStore/helpers/{index.js → index.ts} +24 -1
- package/src/hooks/useStatusOpenStore/{index.js → index.ts} +30 -14
- package/src/hooks/useStatusOrdersClient/{index.js → index.ts} +3 -2
- package/src/hooks/useStatusOrdersClient/{queries.js → queries.ts} +2 -2
- package/src/hooks/useStock/index.ts +1 -0
- package/src/hooks/useStock/useStockUpdatedAllSubscription.ts +40 -0
- package/src/hooks/useStockMovements/helpers/{index.js → index.ts} +1 -1
- package/src/hooks/useStockMovements/{index.js → index.ts} +4 -3
- package/src/hooks/useStore/{index.js → index.ts} +30 -27
- package/src/hooks/useStoreContacts/{index.js → index.ts} +11 -5
- package/src/hooks/useStoreTable/{useStoreTableCreate.js → useStoreTableCreate.ts} +3 -2
- package/src/hooks/useStoreTable/{useStoreTables.js → useStoreTables.ts} +2 -1
- package/src/hooks/useSubscriptionValidation/index.ts +112 -0
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +66 -66
- package/src/hooks/useTagProducts/useGetAllTags.ts +2 -2
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +27 -26
- package/src/hooks/useTheme/index.ts +65 -0
- package/src/hooks/useTimeAgo/{useTimeAgo.js → useTimeAgo.ts} +7 -7
- package/src/hooks/useTokenCards/{index.js → index.ts} +7 -3
- package/src/hooks/useUpdateCart/{index.js → index.ts} +3 -2
- package/src/hooks/useUpdateCartCookie/{index.js → index.ts} +23 -6
- package/src/hooks/useUpdateDashboardComponent/index.ts +11 -11
- package/src/hooks/useUpdateExtProductFoodsSubOptional/{index.js → index.ts} +2 -1
- package/src/hooks/useUpdateModuleOrder/{index.js → index.ts} +2 -2
- package/src/hooks/useUpdateMultipleExtProduct/{index.js → index.ts} +2 -1
- package/src/hooks/useUpdateMultipleProducts/{index.js → index.ts} +57 -20
- package/src/hooks/useUploadProducts/helpers/{parseNumber.js → parseNumber.ts} +3 -3
- package/src/hooks/useUploadProducts/{index.js → index.ts} +89 -69
- package/src/hooks/useUpsertGoal/{index.js → index.ts} +1 -1
- package/src/hooks/useUser/{index.js → index.ts} +5 -4
- package/src/hooks/useWeeklyStockMovement/helpers/{index.js → index.ts} +3 -3
- package/src/hooks/useWeeklyStockMovement/{index.js → index.ts} +4 -3
- package/src/hooks/useWindowSize/{index.js → index.ts} +9 -2
- package/src/index.ts +13 -0
- package/src/security/index.ts +1 -0
- package/src/services/index.ts +1 -0
- package/src/utils/UtilDateRange.ts +56 -0
- package/src/utils/generateCode.ts +222 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/{index.js → utils.ts} +69 -31
- package/tsconfig.eslint.json +16 -0
- package/tsconfig.json +18 -2
- package/tsup.config.ts +24 -0
- package/.eslintrc.js +0 -38
- package/.eslintrc.json +0 -127
- package/src/config/client/errors.js +0 -26
- package/src/hooks/convertToMilitaryTime/index.js +0 -14
- package/src/hooks/generateStoreURL/index.js +0 -38
- package/src/hooks/getGlobalSession/index.js +0 -49
- package/src/hooks/getSession/index.js +0 -18
- package/src/hooks/getTotalHours/index.js +0 -48
- package/src/hooks/statusOpenStores/index.js +0 -156
- package/src/hooks/useAcumulateDate/index.js +0 -16
- package/src/hooks/useCategoryInStore/index.js +0 -100
- package/src/hooks/useEditOneExtProductFoodOptional/index.js +0 -28
- package/src/hooks/useEditSubProductOptional/index.js +0 -11
- package/src/hooks/useLogout/helpers/BroadcastChannel.js +0 -31
- package/src/hooks/useManageQueryParams/index.js +0 -40
- package/src/hooks/useModules/index.js +0 -58
- package/src/hooks/useSales/helpers/index.js +0 -55
- package/src/hooks/useSubscriptionValidation/index.js +0 -41
- package/src/index.jsx +0 -9
- package/src/security/index.js +0 -1
- package/src/utils/UtilDateRange.js +0 -31
- /package/src/config/client/{index.js → index.ts} +0 -0
- /package/src/config/content/{index.js → index.ts} +0 -0
- /package/src/cookies/{index.js → index.ts} +0 -0
- /package/src/hooks/getCategoriesWithProduct/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/isTokenExpired/{index.js → index.ts} +0 -0
- /package/src/hooks/newMessageSubscription/{index.js → index.ts} +0 -0
- /package/src/hooks/newStoreOrderSubscription/{index.js → index.ts} +0 -0
- /package/src/hooks/useAnimationFrame/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCart/{index.js → index.ts} +0 -0
- /package/src/hooks/useCart/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCatWithProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCatWithProductClient/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCategoriesProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCategoryInStore/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useChatRoomSubscription/{index.js → index.ts} +0 -0
- /package/src/hooks/useCities/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useColorByLetters/helpers/{colors.js → colors.ts} +0 -0
- /package/src/hooks/useCountries/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCreateDeliveryTime/{index.js → index.ts} +0 -0
- /package/src/hooks/useCreateStorePendingToRegister/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDashboardComponents/{index.js → index.ts} +0 -0
- /package/src/hooks/useDeleteSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDepartments/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDessert/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useDessertWithPrice/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDevices/{index.js → index.ts} +0 -0
- /package/src/hooks/useDevices/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDynamicAuth/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useEditSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useEvent/{index.js → index.ts} +0 -0
- /package/src/hooks/useFavoriteStores/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useFetchJson/{index.js → index.ts} +0 -0
- /package/src/hooks/useFormatNumberPhone/{index.js → index.ts} +0 -0
- /package/src/hooks/useGenerateNumberArray/{index.js → index.ts} +0 -0
- /package/src/hooks/useGetCookies/{index.js → index.ts} +0 -0
- /package/src/hooks/useGetFoodRecomended/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetMessagesToRoom/{index.js → index.ts} +0 -0
- /package/src/hooks/useGetMinPrice/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetOneStoreRating/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetSalesAmountToday/{index.js → index.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{loadScript.js → loadScript.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{removeScript.js → removeScript.ts} +0 -0
- /package/src/hooks/useImagesStore/utils/{index.js → index.ts} +0 -0
- /package/src/hooks/useInnerHtml/{index.js → index.ts} +0 -0
- /package/src/hooks/useInventory/{index.js → index.ts} +0 -0
- /package/src/hooks/useInventory/{useUpdateManageStock.js → useUpdateManageStock.ts} +0 -0
- /package/src/hooks/useKeypress/{index.js → index.ts} +0 -0
- /package/src/hooks/useLocalBackendIp/{index.js → index.ts} +0 -0
- /package/src/hooks/useLocationNavigate/{index.js → index.ts} +0 -0
- /package/src/hooks/useManageNewOrder/helpers/{mock.js → mock.ts} +0 -0
- /package/src/hooks/useMobile/{index.js → index.ts} +0 -0
- /package/src/hooks/useModules/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useMutateHeight/{index.js → index.ts} +0 -0
- /package/src/hooks/useOrderClient/{index.js → index.ts} +0 -0
- /package/src/hooks/useOrders/{index.js → index.ts} +0 -0
- /package/src/hooks/usePWAInstall/{index.js → index.ts} +0 -0
- /package/src/{services/index.js → hooks/useProductsFood/types/index.ts} +0 -0
- /package/src/hooks/useProviders/{index.js → index.ts} +0 -0
- /package/src/hooks/useProviders/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useProvidersStore/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useQueryLocationsMap/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useReactToPrint/{index.js → index.txt} +0 -0
- /package/src/hooks/useRemoveExtraProductFoodsOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useRestaurant/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useRoads/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useRoles/{index.js → index.ts} +0 -0
- /package/src/hooks/useRoles/{useRemoveRoles.js → useRemoveRoles.ts} +0 -0
- /package/src/hooks/useRoles/{useUpdateRolesPriority.js → useUpdateRolesPriority.ts} +0 -0
- /package/src/hooks/useSaveAvailableProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useSchedule/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useScroll/{index.js → index.ts} +0 -0
- /package/src/hooks/useScrollRotate/{index.js → index.ts} +0 -0
- /package/src/hooks/useSetImageProducts/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useSetSession/{index.js → index.ts} +0 -0
- /package/src/hooks/useSetState/{index.js → index.ts} +0 -0
- /package/src/hooks/useSetupSchedule/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useStatusOrdersClient/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useStore/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useStoreCalendar/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreContacts/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useStoreTable/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreTable/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useTopProductsMovements/{index.js → index.ts} +0 -0
- /package/src/hooks/useTotalAllSales/{index.js → index.ts} +0 -0
- /package/src/hooks/useTotalProductsInStock/{index.js → index.ts} +0 -0
- /package/src/hooks/useTotalProductsSold/{index.js → index.ts} +0 -0
- /package/src/hooks/useTotalProductsSolded/{index.js → index.ts} +0 -0
- /package/src/hooks/useUpdateExistingOrders/{index.js → index.ts} +0 -0
- /package/src/hooks/useUpdateMultipleExtProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useUpdateMultipleProducts/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useUploadProducts/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useUploadProducts/helpers/{validateProductDataExcel.js → validateProductDataExcel.ts} +0 -0
- /package/src/hooks/useUser/{queries.js → queries.ts} +0 -0
- /package/src/mock/dessert/{index.js → index.ts} +0 -0
- /package/src/mock/{index.js → index.ts} +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import js from "@eslint/js"
|
|
2
|
+
import { defineConfig } from "eslint/config"
|
|
3
|
+
import importPlugin from "eslint-plugin-import"
|
|
4
|
+
import jsdoc from "eslint-plugin-jsdoc"
|
|
5
|
+
import react from "eslint-plugin-react"
|
|
6
|
+
import globals from "globals"
|
|
7
|
+
import tseslint from "typescript-eslint"
|
|
8
|
+
|
|
9
|
+
export default defineConfig([
|
|
10
|
+
// base JS/TS files
|
|
11
|
+
{
|
|
12
|
+
files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
13
|
+
plugins: {
|
|
14
|
+
js,
|
|
15
|
+
import: importPlugin, // 👈 ,
|
|
16
|
+
jsdoc,
|
|
17
|
+
react,
|
|
18
|
+
"react-hooks": require("eslint-plugin-react-hooks"),
|
|
19
|
+
},
|
|
20
|
+
extends: ["js/recommended"],
|
|
21
|
+
languageOptions: {
|
|
22
|
+
globals: { ...globals.browser, ...globals.node },
|
|
23
|
+
ecmaVersion: "latest",
|
|
24
|
+
sourceType: "module",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
// recommended TS config (from typescript-eslint)
|
|
29
|
+
tseslint.configs.recommended,
|
|
30
|
+
|
|
31
|
+
// Strict, opinionated ruleset applied across the codebase
|
|
32
|
+
{
|
|
33
|
+
files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
34
|
+
// rely on previously loaded parsers/plugins (typescript-eslint, etc.)
|
|
35
|
+
rules: {
|
|
36
|
+
// JavaScript hygiene
|
|
37
|
+
eqeqeq: "error",
|
|
38
|
+
curly: ["error", "multi-line"],
|
|
39
|
+
"no-var": "error",
|
|
40
|
+
"prefer-const": ["error", { destructuring: "all" }],
|
|
41
|
+
"no-debugger": "error",
|
|
42
|
+
"no-console": ["warn", { allow: ["warn", "error"] }],
|
|
43
|
+
"consistent-return": "error",
|
|
44
|
+
"no-implicit-coercion": "error",
|
|
45
|
+
|
|
46
|
+
// complexity / maintainability
|
|
47
|
+
complexity: ["warn", 10],
|
|
48
|
+
"max-params": ["warn", 4],
|
|
49
|
+
"max-depth": ["warn", 4],
|
|
50
|
+
"max-lines": ["warn", { max: 400, skipBlankLines: true, skipComments: true }],
|
|
51
|
+
|
|
52
|
+
// import/order (requires eslint-plugin-import)
|
|
53
|
+
"import/order": [
|
|
54
|
+
"error",
|
|
55
|
+
{
|
|
56
|
+
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "type"],
|
|
57
|
+
"newlines-between": "always",
|
|
58
|
+
alphabetize: { order: "asc", caseInsensitive: true },
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
|
|
62
|
+
// encourage clear async/await and promise handling
|
|
63
|
+
"no-return-await": "error",
|
|
64
|
+
"require-atomic-updates": "error",
|
|
65
|
+
|
|
66
|
+
// jsdoc (requires eslint-plugin-jsdoc) — keep docs enforced
|
|
67
|
+
"jsdoc/check-alignment": "warn",
|
|
68
|
+
"jsdoc/require-jsdoc": [
|
|
69
|
+
"warn",
|
|
70
|
+
{
|
|
71
|
+
require: {
|
|
72
|
+
FunctionDeclaration: true,
|
|
73
|
+
MethodDefinition: true,
|
|
74
|
+
ClassDeclaration: true,
|
|
75
|
+
ArrowFunctionExpression: false,
|
|
76
|
+
FunctionExpression: false,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
"jsdoc/require-param": "error",
|
|
81
|
+
"jsdoc/require-returns": "error",
|
|
82
|
+
},
|
|
83
|
+
settings: {
|
|
84
|
+
react: { version: "detect" },
|
|
85
|
+
// import resolver for TypeScript projects (if installed)
|
|
86
|
+
"import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] },
|
|
87
|
+
"import/resolver": {
|
|
88
|
+
typescript: {
|
|
89
|
+
// Use default tsconfig lookup. Override if monorepo packages have own tsconfigs.
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
// React / Next / Hooks specific rules
|
|
96
|
+
{
|
|
97
|
+
files: ["**/*.{jsx,tsx}"],
|
|
98
|
+
rules: {
|
|
99
|
+
"react/prop-types": "off", // TS covers prop types
|
|
100
|
+
"react/react-in-jsx-scope": "off",
|
|
101
|
+
"react/jsx-uses-react": "off",
|
|
102
|
+
"react/jsx-boolean-value": ["error", "always"],
|
|
103
|
+
"react/jsx-curly-brace-presence": ["error", { props: "always", children: "never" }],
|
|
104
|
+
"react/jsx-no-useless-fragment": "error",
|
|
105
|
+
"react-hooks/rules-of-hooks": "error",
|
|
106
|
+
"react-hooks/exhaustive-deps": ["warn", { additionalHooks: "(useRecoilCallback)" }],
|
|
107
|
+
},
|
|
108
|
+
// ensure react plugin is available in projects using JSX
|
|
109
|
+
// (no explicit plugin import here plugin must be installed)
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
// Node-only package override for packages/logic (no browser globals, no React)
|
|
113
|
+
{
|
|
114
|
+
files: ["packages/logic/**/*.{ts,js}"],
|
|
115
|
+
languageOptions: {
|
|
116
|
+
globals: { ...globals.node },
|
|
117
|
+
sourceType: "module",
|
|
118
|
+
},
|
|
119
|
+
rules: {
|
|
120
|
+
// logic package should be pure and side-effect free where possible
|
|
121
|
+
"no-restricted-syntax": [
|
|
122
|
+
"error",
|
|
123
|
+
{
|
|
124
|
+
selector: "CallExpression[callee.name='fetch']",
|
|
125
|
+
message: "Avoid fetch in logic package inject HTTP clients from caller.",
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
"import/no-extraneous-dependencies": ["error", { devDependencies: false, optionalDependencies: false }],
|
|
129
|
+
// allow fewer UI-related rules
|
|
130
|
+
"react/no-unknown-property": "off",
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
// GraphQL linting placeholder (if @graphql-eslint installed + .graphqlrc present)
|
|
135
|
+
{
|
|
136
|
+
files: ["**/*.graphql", "**/*.gql", "**/*.{ts,tsx,js,jsx}"],
|
|
137
|
+
rules: {
|
|
138
|
+
// keep GraphQL checks opt-in via plugin these are examples you can enable
|
|
139
|
+
// '@graphql-eslint/no-deprecated-fields': 'warn',
|
|
140
|
+
// '@graphql-eslint/known-type-names': 'error',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// Strictness for commit-time / CI (can be toggled by CI pipeline)
|
|
145
|
+
{
|
|
146
|
+
files: ["**/*.{js,ts,tsx}"],
|
|
147
|
+
// treat some warnings as errors in CI — consumer can override in CI env
|
|
148
|
+
rules: {
|
|
149
|
+
// This is intentionally conservative in local dev CI pipeline can set env to escalate
|
|
150
|
+
"no-warning-comments": ["warn", { terms: ["todo", "fixme", "xxx"], location: "start" }],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
])
|
package/package.json
CHANGED
|
@@ -1,50 +1,35 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"react-dom": "^19.0.0",
|
|
12
|
-
"react-query": "^3.39.2",
|
|
13
|
-
"xlsx": "0.18.5"
|
|
2
|
+
"main": "dist/index.cjs",
|
|
3
|
+
"module": "dist/index.mjs",
|
|
4
|
+
"types": "dist/index.d.ts",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"import": "./dist/index.mjs",
|
|
8
|
+
"require": "./dist/index.cjs",
|
|
9
|
+
"types": "./dist/index.d.ts"
|
|
10
|
+
}
|
|
14
11
|
},
|
|
15
|
-
"description": "description-pkg-hook",
|
|
16
|
-
"devDependencies": {
|
|
17
|
-
"@babel/preset-env": "^7.19.1",
|
|
18
|
-
"@babel/preset-react": "^7.18.6",
|
|
19
|
-
"@babel/preset-typescript": "^7.18.6",
|
|
20
|
-
"@types/node": "^20.11.16",
|
|
21
|
-
"@types/react": "^18.0.20",
|
|
22
|
-
"@typescript-eslint/eslint-plugin": "5.29.0",
|
|
23
|
-
"@typescript-eslint/parser": "5.29.0",
|
|
24
|
-
"eslint": "^8.0.1",
|
|
25
|
-
"eslint-config-standard": "^17.0.0",
|
|
26
|
-
"eslint-plugin-import": "^2.25.2",
|
|
27
|
-
"eslint-plugin-n": "^15.0.0",
|
|
28
|
-
"eslint-plugin-promise": "^6.0.0",
|
|
29
|
-
"eslint-plugin-react": "^7.33.2",
|
|
30
|
-
"eslint-plugin-react-hooks": "^4.6.0"
|
|
31
|
-
},
|
|
32
|
-
"license": "ISC",
|
|
33
|
-
"main": "/src/index.jsx",
|
|
34
|
-
"name": "npm-pkg-hook",
|
|
35
|
-
"publishConfig": {
|
|
36
|
-
"registry": "https://registry.npmjs.org/"
|
|
37
|
-
},
|
|
38
|
-
"repository": {
|
|
39
|
-
"type": "git",
|
|
40
|
-
"url": "https://github.com/Jesus123780/pkg-hook"
|
|
41
|
-
},
|
|
42
|
-
"private": false,
|
|
43
12
|
"scripts": {
|
|
13
|
+
"build": "tsup",
|
|
14
|
+
"prepare": "npm run build",
|
|
15
|
+
"prepublishOnly": "npm run build",
|
|
44
16
|
"lint": "eslint .",
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
17
|
+
"test": "jest"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"react": "^18 || ^19",
|
|
21
|
+
"react-dom": "^18 || ^19",
|
|
22
|
+
"next": "^14 || ^15",
|
|
23
|
+
"@apollo/client": "^3 || ^4",
|
|
24
|
+
"graphql": "^16"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"tsup": "8.5.1",
|
|
28
|
+
"typescript": "5.9.3",
|
|
29
|
+
"@types/react": "18.0.20",
|
|
30
|
+
"@types/js-cookie": "3.0.6",
|
|
31
|
+
"@types/file-saver": "2.0.7"
|
|
48
32
|
},
|
|
49
|
-
"version": "1.12.
|
|
50
|
-
|
|
33
|
+
"version": "1.12.8",
|
|
34
|
+
"name": "npm-pkg-hook"
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { onError } from '@apollo/client/link/error'
|
|
2
|
+
|
|
3
|
+
interface GraphQLErrorExtension {
|
|
4
|
+
code?: string
|
|
5
|
+
message?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface GraphQLErrorItem {
|
|
9
|
+
extensions?: GraphQLErrorExtension
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface ErrorWithErrors {
|
|
13
|
+
errors?: GraphQLErrorItem[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const errorHandler = (error: ErrorWithErrors | null | undefined): boolean | null => {
|
|
17
|
+
let logout: boolean | null = null
|
|
18
|
+
if (error && Array.isArray(error?.errors)) {
|
|
19
|
+
error.errors?.length && error?.errors?.forEach((err: GraphQLErrorItem) => {
|
|
20
|
+
if (err?.extensions) {
|
|
21
|
+
const { code, message }: GraphQLErrorExtension = err?.extensions || {}
|
|
22
|
+
if (code === 'UNAUTHENTICATED' || code === 'FORBIDDEN') {
|
|
23
|
+
logout = true
|
|
24
|
+
return {
|
|
25
|
+
status: 'FORBIDDEN',
|
|
26
|
+
message
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
return logout
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const errorLink = onError(({ graphQLErrors, networkError }) => {
|
|
36
|
+
if (graphQLErrors)graphQLErrors.map(({ message, path }) => { return console.log(`[GraphQL error]: Message: ${message}, Path: ${path}`) })
|
|
37
|
+
|
|
38
|
+
if (networkError) console.log(`[Network error]: ${networkError}`)
|
|
39
|
+
})
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @param {number} num - The number of minutes (between 1 and 60).
|
|
4
4
|
* @returns {string} A string indicating the original number and the result of adding 10 minutes.
|
|
5
5
|
*/
|
|
6
|
-
export const addTenMinutes = (num) => {
|
|
6
|
+
export const addTenMinutes = (num: number) => {
|
|
7
7
|
if (num > 60) return ''
|
|
8
8
|
if (num >= 50) {
|
|
9
9
|
const newNum = num - 10
|
|
10
10
|
return `${newNum} - ${60} min`
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
}
|
|
12
|
+
return `${num} - ${num + 10} min`
|
|
13
|
+
|
|
14
14
|
}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param deg
|
|
4
|
+
*/
|
|
5
|
+
function deg2rad(deg: number): number {
|
|
2
6
|
return deg * (Math.PI / 180)
|
|
3
7
|
}
|
|
4
8
|
|
|
5
9
|
// Función para calcular la distancia entre un punto fijo y un punto dado utilizando la fórmula de Haversine
|
|
6
|
-
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param lat1
|
|
13
|
+
* @param lon1
|
|
14
|
+
* @param lat2
|
|
15
|
+
* @param lon2
|
|
16
|
+
*/
|
|
17
|
+
export function calculateLogLatHaversine(lat1: number, lon1: number, lat2: number, lon2: number): number {
|
|
7
18
|
const radioTierra = 6371 // Radio de la Tierra en kilómetros
|
|
8
19
|
const dLat = deg2rad(lat2 - lat1)
|
|
9
20
|
const dLon = deg2rad(lon2 - lon1)
|
|
10
21
|
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
11
|
-
|
|
12
|
-
|
|
22
|
+
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
|
|
23
|
+
Math.sin(dLon / 2) * Math.sin(dLon / 2)
|
|
13
24
|
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
|
|
14
25
|
const distancia = radioTierra * c
|
|
15
26
|
return distancia
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const completeSchedules = (dataSchedules) => {
|
|
1
|
+
export const completeSchedules = (dataSchedules: { schDay: number; schHoSta: string; schHoEnd: string }[]) => {
|
|
2
2
|
// Días de la semana
|
|
3
3
|
const daysSemana = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']
|
|
4
4
|
|
|
@@ -10,13 +10,13 @@ export const completeSchedules = (dataSchedules) => {
|
|
|
10
10
|
}
|
|
11
11
|
mapa[day].push({ horaInicio: horario.schHoSta, horaFin: horario.schHoEnd })
|
|
12
12
|
return mapa
|
|
13
|
-
}, {})
|
|
13
|
+
}, {} as Record<string, { horaInicio: string; horaFin: string }[]>)
|
|
14
14
|
|
|
15
15
|
// Completar los días que faltan y formatear el objeto
|
|
16
|
-
const horariosFormateados = daysSemana.map((day, index) =>
|
|
16
|
+
const horariosFormateados = daysSemana.map((day, index) => {return {
|
|
17
17
|
day,
|
|
18
18
|
horarios: horariosPorDia[day] || [{ horaInicio: '', horaFin: '' }]
|
|
19
|
-
})
|
|
19
|
+
}})
|
|
20
20
|
|
|
21
21
|
return horariosFormateados
|
|
22
22
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param time12Hour
|
|
4
|
+
*/
|
|
5
|
+
export function convertToMilitaryTime(time12Hour: string): string {
|
|
6
|
+
const [time, period]: [string, string] = time12Hour.split(' ') as [string, string]
|
|
7
|
+
let [hours, minutes]: [string, string] = time.split(':') as [string, string]
|
|
8
|
+
|
|
9
|
+
if (period === 'PM' && hours !== '12') {
|
|
10
|
+
hours = String(Number(hours) + 12)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (period === 'AM' && hours === '12') {
|
|
14
|
+
hours = '00'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return `${hours}:${minutes}`
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the store URL based on given parameters.
|
|
3
|
+
* @returns The generated URL or '/' if any field is missing.
|
|
4
|
+
*/
|
|
5
|
+
type City = { cName: string };
|
|
6
|
+
type Department = { dName: string };
|
|
7
|
+
|
|
8
|
+
interface GenerateStoreURLParams {
|
|
9
|
+
city: City;
|
|
10
|
+
department: Department;
|
|
11
|
+
storeName: string;
|
|
12
|
+
idStore: string;
|
|
13
|
+
rootMainPath?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const generateStoreURL = ({
|
|
17
|
+
city,
|
|
18
|
+
department,
|
|
19
|
+
storeName,
|
|
20
|
+
idStore,
|
|
21
|
+
rootMainPath = 'delivery'
|
|
22
|
+
}: GenerateStoreURLParams): string => {
|
|
23
|
+
// Validate all necessary fields
|
|
24
|
+
if (
|
|
25
|
+
!process.env.MAIN_URL_BASE ||
|
|
26
|
+
!city?.cName ||
|
|
27
|
+
!department?.dName ||
|
|
28
|
+
!storeName ||
|
|
29
|
+
!idStore
|
|
30
|
+
) {
|
|
31
|
+
return '/' // Return '/' or any default case you'd prefer
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const cityName = city.cName.toLocaleLowerCase()
|
|
35
|
+
const departmentName = department.dName.toLocaleLowerCase()
|
|
36
|
+
|
|
37
|
+
// Replace spaces in storeName with hyphens
|
|
38
|
+
const formattedStoreName = storeName.replace(/ /g, '-')
|
|
39
|
+
|
|
40
|
+
return `${process.env.MAIN_URL_BASE}/${rootMainPath}/${cityName}-${departmentName}/${formattedStoreName}/${idStore}`
|
|
41
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as Excel from 'xlsx'
|
|
2
1
|
import { saveAs } from 'file-saver'
|
|
2
|
+
import * as Excel from 'xlsx'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Class to generate Excel reports.
|
|
@@ -11,19 +11,23 @@ export class GenerateReport {
|
|
|
11
11
|
* @param {number} type - The type of report to generate.
|
|
12
12
|
* @throws Will throw an error if data is not an array or type is not a valid number.
|
|
13
13
|
*/
|
|
14
|
-
GenExcelReport
|
|
14
|
+
GenExcelReport(data: object[], type: number): void {
|
|
15
15
|
if (!Array.isArray(data)) {
|
|
16
|
-
throw new
|
|
16
|
+
throw new TypeError('Data must be an array of objects.')
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
if (typeof type !== 'number') {
|
|
20
|
-
throw new
|
|
20
|
+
throw new TypeError('Type must be a valid number.')
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const ws = Excel.utils.json_to_sheet(data)
|
|
24
24
|
|
|
25
25
|
// Apply bold font to the header row
|
|
26
|
-
const
|
|
26
|
+
const ref = ws['!ref']
|
|
27
|
+
if (!ref) {
|
|
28
|
+
throw new TypeError('Worksheet reference is undefined.')
|
|
29
|
+
}
|
|
30
|
+
const range = Excel.utils.decode_range(ref)
|
|
27
31
|
for (let C = range.s.c; C <= range.e.c; ++C) {
|
|
28
32
|
const cell = ws[Excel.utils.encode_cell({ r: 0, c: C })]
|
|
29
33
|
if (cell) {
|
|
@@ -40,10 +44,10 @@ export class GenerateReport {
|
|
|
40
44
|
const excelBuffer = Excel.write(wb, { bookType: 'xlsx', type: 'array' })
|
|
41
45
|
const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
|
42
46
|
const fileName = this.GenExcelReportFileName(type)
|
|
43
|
-
if (fileName
|
|
47
|
+
if (fileName) {
|
|
44
48
|
saveAs(blob, String(fileName))
|
|
45
49
|
} else {
|
|
46
|
-
throw new
|
|
50
|
+
throw new TypeError('Invalid report type provided.')
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
|
|
@@ -52,11 +56,11 @@ export class GenerateReport {
|
|
|
52
56
|
* @param {number} type - The type of report.
|
|
53
57
|
* @returns {string | null} The file name for the report, or null if type is invalid.
|
|
54
58
|
*/
|
|
55
|
-
GenExcelReportFileName
|
|
56
|
-
const fileNames = {
|
|
57
|
-
1: `report_${new Date().toISOString().replace(
|
|
59
|
+
GenExcelReportFileName(type: number): string | null {
|
|
60
|
+
const fileNames: { [key: number]: string } = {
|
|
61
|
+
1: `report_${new Date().toISOString().replace(':', '-').replace('.', '-')}.xlsx`
|
|
58
62
|
}
|
|
59
63
|
|
|
60
|
-
return fileNames[type]
|
|
64
|
+
return fileNames[type] ?? null
|
|
61
65
|
}
|
|
62
66
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jaccardSimilarity } from './helpers'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
* Get categories that contain products with names similar to the given product name.
|
|
5
|
+
* Uses the Jaccard similarity coefficient for string comparison.
|
|
6
|
+
* @param {Array} data - The array of categories with product information.
|
|
7
|
+
* @param {string} productName - The name of the product to search for.
|
|
8
|
+
* @param {number} similarityThreshold - The minimum similarity threshold for products (0.0 to 1.0).
|
|
9
|
+
* @returns {Array} - An array of categories containing similar products.
|
|
10
|
+
*/
|
|
11
11
|
export const getCategoriesWithProduct = (
|
|
12
12
|
data = [],
|
|
13
13
|
productName = '',
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import crypto from 'node:crypto'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param password
|
|
6
|
+
* @param salt
|
|
7
|
+
*/
|
|
8
|
+
function generateEncryptionKey(password: string, salt: string): string {
|
|
9
|
+
return crypto
|
|
10
|
+
.pbkdf2Sync(password, salt, 100000, 32, 'sha256')
|
|
11
|
+
.toString('hex')
|
|
12
|
+
.slice(0, 32)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const ENCRYPTION_KEY = generateEncryptionKey(
|
|
16
|
+
'tu-contraseña',
|
|
17
|
+
'alguna-sal-segura'
|
|
18
|
+
)
|
|
19
|
+
const IV_LENGTH = 12 // Para AES-GCM, el IV recomendado es 12 bytes
|
|
20
|
+
|
|
21
|
+
export const encryptSession = (text: string): string | null => {
|
|
22
|
+
try {
|
|
23
|
+
const iv = crypto.randomBytes(IV_LENGTH)
|
|
24
|
+
const cipher = crypto.createCipheriv(
|
|
25
|
+
'aes-256-gcm',
|
|
26
|
+
Buffer.from(ENCRYPTION_KEY),
|
|
27
|
+
iv
|
|
28
|
+
)
|
|
29
|
+
let encrypted = cipher.update(text, 'utf8')
|
|
30
|
+
encrypted = Buffer.concat([encrypted, cipher.final()])
|
|
31
|
+
const authTag = cipher.getAuthTag()
|
|
32
|
+
// Concatenar IV, AuthTag y el texto cifrado, separados por ':'
|
|
33
|
+
return [
|
|
34
|
+
iv.toString('hex'),
|
|
35
|
+
authTag.toString('hex'),
|
|
36
|
+
encrypted.toString('hex')
|
|
37
|
+
].join(':')
|
|
38
|
+
} catch (error) {
|
|
39
|
+
if (error instanceof Error) {
|
|
40
|
+
console.error('Error de encriptación:', error.message)
|
|
41
|
+
}
|
|
42
|
+
return null
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const decryptSession = (text: string): string | null => {
|
|
47
|
+
try {
|
|
48
|
+
if (!text) return null
|
|
49
|
+
const textParts = text.split(':')
|
|
50
|
+
if (textParts.length !== 3) return null
|
|
51
|
+
const iv = Buffer.from(textParts[0], 'hex')
|
|
52
|
+
const authTag = Buffer.from(textParts[1], 'hex')
|
|
53
|
+
const encryptedText = Buffer.from(textParts[2], 'hex')
|
|
54
|
+
const decipher = crypto.createDecipheriv(
|
|
55
|
+
'aes-256-gcm',
|
|
56
|
+
Buffer.from(ENCRYPTION_KEY),
|
|
57
|
+
iv
|
|
58
|
+
)
|
|
59
|
+
decipher.setAuthTag(authTag)
|
|
60
|
+
let decrypted = decipher.update(encryptedText)
|
|
61
|
+
decrypted = Buffer.concat([decrypted, decipher.final()])
|
|
62
|
+
return decrypted.toString('utf8')
|
|
63
|
+
} catch (error) {
|
|
64
|
+
if (error instanceof Error) {
|
|
65
|
+
console.error('Error de desencriptación:', error.message)
|
|
66
|
+
}
|
|
67
|
+
return null
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Cookies } from '../../cookies'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Decodes a JWT safely without verifying signature.
|
|
5
|
+
* Use ONLY for reading payload data.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} token - JWT string
|
|
8
|
+
* @returns {Record<string, any> | null}
|
|
9
|
+
*/
|
|
10
|
+
const decodeJwtPayload = (token: string): Record<string, any> | null => {
|
|
11
|
+
try {
|
|
12
|
+
const [, payload] = token.split('.')
|
|
13
|
+
if (!payload) return null
|
|
14
|
+
|
|
15
|
+
const decoded = Buffer.from(payload, 'base64').toString('utf-8')
|
|
16
|
+
return JSON.parse(decoded)
|
|
17
|
+
} catch {
|
|
18
|
+
return null
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Gets session data from cookie "session".
|
|
24
|
+
* Designed for Next.js 15 App Router (server-side).
|
|
25
|
+
*
|
|
26
|
+
* @returns {Promise<{
|
|
27
|
+
* isSession: boolean
|
|
28
|
+
* token?: string
|
|
29
|
+
* user?: Record<string, any>
|
|
30
|
+
* deviceid?: string
|
|
31
|
+
* error?: string
|
|
32
|
+
* }>}
|
|
33
|
+
*/
|
|
34
|
+
export const getSession = async () => {
|
|
35
|
+
try {
|
|
36
|
+
const token = Cookies.get('session')
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
if (!token) {
|
|
39
|
+
resolve({ isSession: false })
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
const payload = decodeJwtPayload(token)
|
|
43
|
+
if (!payload) {
|
|
44
|
+
resolve({ isSession: false })
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
const { user, deviceid, exp } = payload
|
|
48
|
+
const currentTime = Math.floor(Date.now() / 1000)
|
|
49
|
+
if (exp && currentTime >= exp) {
|
|
50
|
+
resolve({ isSession: false })
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
resolve({
|
|
54
|
+
isSession: true,
|
|
55
|
+
token,
|
|
56
|
+
user,
|
|
57
|
+
deviceid
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (error instanceof Error) {
|
|
62
|
+
return {
|
|
63
|
+
isSession: false,
|
|
64
|
+
error: String(error.message)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
isSession: false,
|
|
69
|
+
error: 'Unexpected session error'
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|